【发布时间】:2020-10-09 22:11:02
【问题描述】:
我正在尝试从一个单独的线程在 Tkinter 中打包一些东西。我不断收到RuntimeError。
具体:RuntimeError: main thread is not in main loop
问题是:如何从单独的线程更新 GUI(主循环)?
问题的来源:
def protocol(self, scheduleName): #ran as thread
print("Getting courses")
self.coursesLabel.pack() #throws the error
...
我希望能够将此线程中的项目打包到mainloop()。我不确定如何在两个线程之间传输。
提前感谢您的帮助!
编辑:大多数已经存在的问题都针对同时运行两个独立 GUI 的人。我只需要知道如何将东西从一个线程打包到另一个线程,而不是像同时运行两个 GUI 那样复杂。大多数答案也使用了队列,我想知道是否有更优雅的方式从不同的线程打包内容。
【问题讨论】:
-
本站有 16 个问题提到了错误“主线程不在主循环中”。这些问题都对你没有帮助吗?
-
大多数这些问题都针对同时运行两个独立 GUI 的人。我只需要知道如何将东西从一个线程打包到另一个线程,而不是像同时运行两个 GUI 那样复杂。大多数答案也使用队列,我想知道是否有一种更优雅的方式可以从单独的线程中打包内容。感谢您的回复!
-
也许您应该更新您的问题以反映您已经尝试过这些其他解决方案或看到它们并认为它们不适用,然后还说您想知道是否还有更多元素而不是使用队列。正如所写,您的问题没有显示任何研究。
-
这是 tkinter 线程情况的一个很好的背景,由帮助编写底层 tcl/tk 引擎的人之一编写:stackoverflow.com/questions/38767355/…
标签: python multithreading tkinter