-1

所以,我有以下代码示例:

from Tkinter import *
import socket

def click(*args):
    sock = socket.socket()
    try:
        sock.connect(('localhost', 9999))
        sock.send(args)
    except socket.error:
        print 'server is not runing'
        pass


root = Tk()
root.bind("<Button-1>", click)
mainloop()

这看起来很清楚:你运行代码,Tkinter 窗口到达,你点击它,它打印“服务器没有运行”,因为没有服务器在 9999 端口运行。

但是,如果您将绑定函数的调用从clicktoclick("wtf")或什至更改为click(),脚本将在窗口出现后立即打印消息,然后再实际单击它。

为什么会发生这样的事情?

4

1 回答 1

2

按预期工作;-) 使用圆括号,将在执行 root.bind 之前调用函数“click”。没有大括号的“点击”将仅用作参考。

>>> def click(*args):
...     print "click"
...
>>> click
<function click at 0x022FECB0>
>>> click()
click
>>>
于 2013-09-16T10:19:02.740 回答