Python 即使存在主循环,tk窗口也不会显示

Python 即使存在主循环,tk窗口也不会显示,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,即使有一个被称为“我的tk”的主循环,窗口也不会出现。代码过去是可以工作的,但当我在nums类的第二个函数中编码时,就没有tk窗口了。我希望有人指出错误,而不是简单地给出答案。 有人能帮我解决这个问题吗? 我使用Python IDLE 3.8 图片:[1]: 代码: 我尝试了你的代码,如果你等几秒钟,窗口就会出现。 这是由于以下有问题的代码段造成的: command=nums.assignnewnums(a,b,questxt,ques,ans) 这和你想象的不一样。你在想: command=

即使有一个被称为“我的tk”的主循环,窗口也不会出现。代码过去是可以工作的,但当我在nums类的第二个函数中编码时,就没有tk窗口了。我希望有人指出错误,而不是简单地给出答案。 有人能帮我解决这个问题吗? 我使用Python IDLE 3.8 图片:[1]: 代码:


我尝试了你的代码,如果你等几秒钟,窗口就会出现。 这是由于以下有问题的代码段造成的:

command=nums.assignnewnums(a,b,questxt,ques,ans)
这和你想象的不一样。你在想:

command=lambda: nums.assignnewnums(a, b, questxt, ques, ans)
现在编写代码的方式不是将回调绑定到按钮,而是调用并执行函数,因为您显式调用它,并尝试将返回值绑定为回调,这毫无意义。作为调用函数的一个副作用,由于assignnewnums在到达root.mainloop之前使用time.sleep一段时间,因此主线程处于休眠状态


每当您将回调绑定到按钮时,您都希望提供一个可调用的对象—或者只是一个函数对象,或者如果参数很关键,则提供一个lambda或functools.partial。

非常感谢!此外,使用lambda与使用functools.partial之间是否存在差异。再次感谢!在这种情况下,我会选择lambda。我只是提到了functools.partial作为其他可调用对象的一个示例,但它们更专业,我现在不担心它们。
command=lambda: nums.assignnewnums(a, b, questxt, ques, ans)