2005年09月03日 星期六 08:20
我换了一个邮箱,重新发看看 > from Tkinter import * > > root = Tk() > > frame = Frame(root, width=200, height=250) > > def callback(event): > global x,y > x = event.x > y = event.y > #print x, y > > c = x - a;d = y - b > > if abs(c) >= 3 or abs(d) >= 3: > print c, d > a = a + c; b = b + d > print a, b > > def callback1(event): > global a,b > a = event.x > b = event.y > print a, b > > frame.bind("<1>", callback1) > frame.bind("", callback) > > frame.pack() > > root.mainloop() > a,b是在callback1(event)中定义的全局变量,取的是鼠标点击时的坐标值。必然先点击左键,才有按住左键拖动,所以a,b必然会在x,y前被定义赋值. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050903/f2c82b07/attachment.html
2005年09月03日 星期六 08:49
> > 你应该在main()中或者 if __name__ == '__main__' > 中定义global变量,或者在callback()中重新global一次. > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050903/ffeab939/attachment.htm
2005年09月03日 星期六 11:28
lveax wrote: > 我换了一个邮箱,重新发看看 [...] > def callback(event): > global x,y > x = event.x > y = event.y > #print x, y > > c = x - a;d = y - b > > if abs(c) >= 3 or abs(d) >= 3: > print c, d > a = a + c; b = b + d > print a, b [...] 嗯,这次有缩进,就容易看多了。 你在callback()里有这样的语句: a = a + c; b = b + d 这句语句对a和b进行赋值,你前面又没有定义global a, b,因此python认为本函 数内的a、b为局部名字。 没仔细看你的代码,如果你这里是想改变全局的a和b,那么在callback()里加上 global a, b 如果不是,那就改两个名字好了。 -- Qiangning Hong http://www.hn.org/hongqn (RSS: http://feeds.feedburner.com/hongqn) Registered Linux User #396996 Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=1> Thunderbird! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=183>
Zeuux © 2025
京ICP备05028076号