【问题标题】:Continual unexplained error when using PySimpleGui使用 PySimpleGui 时持续出现无法解释的错误
【发布时间】: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


【解决方案1】:

关闭窗口后可以使用del删除:

#Open window, display, etc.
window.close()
del window

这应该可以解决问题。

【讨论】:

  • 我觉得最后一条语句应该改成del window
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 2013-12-07
  • 2015-12-30
  • 2015-09-26
  • 2013-11-02
  • 1970-01-01
相关资源
最近更新 更多