我有一个简单的python GUI,它根据数组中的值填充网格,我希望这个简单的GUI可以在其他函数运行的同时放在屏幕上。这些其他功能的时间是不确定的,所以我不能使用after(时间,功能)在某个固定的时间间隔内调用它们
def go(self):
"""
Start the main GUI loop
:return:
"""
mainloop()
mainloop在go函数中启动,我想知道是否可以在不关闭窗口的情况下中断mainloop或者在不调用mainloop的情况下绘制GUI?
我知道我能做到
after(time, function)
但是我不知道在屏幕上保持GUI的同时要杀死主循环的内容。
答案 0 :(得分:0)
使用线程模块在主循环旁边运行您的功能:
from threading import Thread
def go(self):
t = Thread(target=function)
t.start() # start the thread in the background
mainloop()
答案 1 :(得分:0)
简单地说:你不能,或者至少它不是你想要做的。我建议重构你的代码,把它放在主循环中(比如让tkinter成为一个类并在init函数中调用函数)。如果您发布整个代码,我可以帮助您。
答案 2 :(得分:0)
mainloop在go函数中启动,我想知道是否可以在不关闭窗口的情况下中断mainloop或者在不调用mainloop的情况下绘制GUI?
听起来你有一个非常独特的需求。为了给你一个字面的答案,是的,可以在不关闭窗口的情况下突破主循环。您可以在根窗口上调用quit
以使mainloop
退出。您可以重新启动mainloop
,或在根窗口上调用update
方法来处理事件。
这通常不是GUI应该如何工作,但如果您确定在程序运行时不需要更新窗口,那么如果您愿意,您当然可以这样做。