Python论坛  - 讨论区

标题:Re: [python-chinese] 用python实现鼠标手势的问题

2005年09月03日 星期六 08:20

lveax lveax.m at gmail.com
Sat Sep 3 08:20:49 HKT 2005

我换了一个邮箱,重新发看看

> 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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月03日 星期六 08:49

july july july.lzu at gmail.com
Sat Sep 3 08:49:46 HKT 2005

> 
> 你应该在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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月03日 星期六 11:28

Qiangning Hong hongqn at gmail.com
Sat Sep 3 11:28:00 HKT 2005

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>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号