したがって、次のコードサンプルがあります。
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 ポートでサーバーが実行されていないためです。
しかし、バインドされた関数の呼び出しをclick
からclick("wtf")
または に変更するとclick()
、スクリプトはウィンドウが表示された直後、実際にクリックする前にメッセージを出力します。
なぜそのようなことが起こるのですか?