【发布时间】:2019-10-12 08:30:12
【问题描述】:
我制作了一个类似于 MS Paint 的程序,您可以创建具有各种颜色和线宽的绘画,以及保存和加载文件。每隔一段时间我都会使用该程序,当终端反复吐出错误读数时,我会遇到一个问题:
Traceback (most recent call last):
File "C:\Program Files (x86)\Python37-32\lib\tkinter\__init__.py", line 332, in __del__
if self._tk.getboolean(self._tk.call("info", "exists", self._name)):
RuntimeError: main thread is not in main loop
Exception ignored in: <function Variable.__del__ at 0x0D7CF4F8>
这大约每半秒吐一次,持续 10 秒,直到 pygame 窗口突然关闭,我收到最后一个错误,读取“Tcl_AsyncDelete:异步处理程序被错误的线程删除”。
我怀疑这与 PySimpleGui 有关,因为重复错误是 tkinter Traceback(PySimpleGui 是基于 tkinter 构建的),但除此之外,我不知道程序的哪个部分可能导致问题。
我会在这里显示一些代码,但我无法确定要显示的特定位置。如果有人有任何建议,我一定会使用他们的建议来寻找要展示的地方 - 当没有打开 GUI 窗口时会发生错误 - 只是用于绘图的基本 pygame 窗口。
如果有人对如何解决此问题或在哪里寻求进一步帮助有任何建议,我们将不胜感激。
提前致谢!
【问题讨论】:
-
错误显示了一些关于
threads的信息。大多数 GUI 框架不喜欢线程,您不能在一个线程中创建窗口/小部件并在其他线程中更改其内容。 -
听起来可能与this StackOverflow answer中所述的问题相同。
-
修复正在进行中......与此同时,如果您使用的唯一 PySimpleGUI 窗口是您完全控制的窗口(即您没有使用弹出窗口等),那么紧接着你关闭你的窗口,也删除窗口对象。如果您的变量名称是
window,则执行window.close(),后跟del window -
@MikeyB 谢谢!我会看到这样做的!
-
请回来发布进展情况!!!
标签: python pygame pysimplegui