从GUI的mainloop()调用另一个模块

时间:2012-01-31 10:12:55

标签: python user-interface

我正在尝试创建一个聊天服务器,其中多个客户端可以连接到服务器。我想在一个模块中创建一个GUI(比如clientgui.py),它调用另一个模块(比如client.py)来连接服务器。

问题是我必须在点击某个按钮时调用client.py。但是这样做时,主循环永远不会被执行。例如,

app = Tk()

...

sendbutton = Button(text,height...., command = Client().senddata())
#This will call function of a different module.

....

app.mainloop()

是否可以在“GUI循环”中调用另一个模块?

1 个答案:

答案 0 :(得分:0)

您没有将功能分配给command,而是senddata的结果。试试这个:

sendbutton = Button(text, height, ..., command = Client().senddata)

那应该可以解决你的问题。请注意senddata方法如何没有括号?那是因为你不想在那里调用它,你想谈论。由于函数和方法是对象,因此可以将其分配给参数(例如command)。

您的代码正在执行的操作是将调用Client().senddata()的结果分配给buttons命令。我假设这不会返回一个函数/方法/可调用对象(但它可以),而是指定None,实际上使按钮在单击时根本不做任何事情。