如何解决使用 PySimpleGUI
我目前正在使用 PySimpleGUI 在 Python 中开发 GUI,并且正在主窗口包含的帧中绘制一些图形。我使用此示例代码成功地做到了这一点1 and it looks fine. 但是,当我在绘制图形后关闭主窗口时,我得到以下与 Tkinter 相关的错误列表:
Exception in Tkinter callback\
Traceback (most recent call last):\
File "/usr/lib64/python3.6/tkinter/__init__.py",line 1705,in __call__\
return self.func(*args)\
File "/usr/lib64/python3.6/tkinter/__init__.py",line 3072,in set\
self.tk.call(self._w,'set',first,last)\
_tkinter.TclError: invalid command name\ ".!toplevel.!frame.!notebook.!frame4.!frame4.!tkscrollableframe.!scrollbar2"\
Exception in Tkinter callback\
Traceback (most recent call last):\
File "/usr/lib64/python3.6/tkinter/__init__.py",last)\
_tkinter.TclError: invalid command name\ ".!toplevel.!frame.!notebook.!frame4.!frame4.!tkscrollableframe.!scrollbar"\
Exception in Tkinter callback\
Traceback (most recent call last):\
File "/usr/lib64/python3.6/tkinter/__init__.py",last)\
_tkinter.TclError: invalid command name\ ".!toplevel.!frame.!notebook.!frame4.!frame4.!tkscrollableframe.!scrollbar"\
我是 matplotlib 的新手,之前没有使用过 Tkinter,但想知道这些错误的原因,如果有人知道的话。我的代码很大,但如果需要,我可以将其添加到帖子中。 我尝试对代码的不同部分进行注释以找到罪魁祸首,当我删除与我使用的演示中的以下内容相对应的行时,错误停止了:
figure_canvas_agg = figureCanvasTkAgg(figure,canvas)
有没有人遇到过这个问题?我在一台运行 Centos 的机器上运行它,并尝试在 Windows 中运行一个更简单的程序,该程序关闭没有任何问题。
提前致谢。
编辑 1:根据要求,我刚刚添加了我可以生成的最简单的 Python 代码来重现这种错误:
import PySimpleGUI as sg
import matplotlib as mp
from matplotlib import figure
from matplotlib.backends import backend_tkagg
import numpy as np
layout1 = [
[
sg.Frame("Frame",[
[
sg.Column(
[
[sg.Canvas(key="-CANVAS-")]
],size=(1000,1000)
)
]
]
)
]
]
layout2 = [
[sg.Column(layout1,scrollable=True)]
]
window = sg.Window("Window",layout2)
window.finalize()
x = np.array(list(range(10)))
fig = figure.figure()
ax = fig.add_axes((0,1,1))
ax.plot(x,x)
figure_canvas_tkagg = backend_tkagg.figureCanvasTkAgg(fig,master=window["-CANVAS-"].TKCanvas)
figure_canvas_tkagg.draw()
figure_canvas_tkagg.get_tk_widget().pack()
while True:
event,values = window.read()
if event == sg.WINDOW_CLOSED:
break
window.close()
这似乎与我的 GUI 代码由 cointainer-objects 中的许多级别的 container-objects 组成的事实有关。在我的完整代码中,我在此之上有几个层,但是一旦我创建了以下层次结构,错误似乎就会出现:
列 框架 柱子 画布
需要注意的是,使用 Visual Studio Code 的调试器我发现错误并不是在窗口关闭时(调用 window.close() 方法时)发生的,而是在一段时间之前发生的。
>编辑 2:我刚刚对其进行了测试,出于某种原因,仅当我在 Centos 机器上而不是在 Windows 中运行附加的 Python 脚本时才会出现此错误。
编辑 3:我发现如果在关闭窗口之前关闭我创建的所有图形,这些错误将不会发生。然而,这不是一个完整的修复,因为错误发生在 PySimpleGUI 的 window.close() 命令运行之前,所以我不知道将关闭图形的代码放在哪里,以防窗口关闭。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。