我使用@furas(使用画布)编写的result_list
类创建了一个杂色帧。
我想将创建的画布保存为图像。因此,我尝试使用滚动帧的canvas属性的postscript方法,即ScrolledFrame
(其中sf._canvas
)。但是我得到了错误:sf=ScrolledFrame(tk.Tk())
。追溯是
TclError: invalid command name ".!scrolledframe.!canvas"
使用的代码是:
Traceback (most recent call last):
File "<ipython-input-20-7da2d37c56af>", line 1, in <module>
runfile('C:/Users/Ing/Desktop/EN/stage/rapports/codes rev/test_affichage.py', wdir='C:/Users/Ing/Desktop/EN/stage/rapports/codes rev')
File "C:\Users\Ing\Documents\anaaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "C:\Users\Ing\Documents\anaaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Ing/Desktop/EN/stage/rapports/codes rev/test_affichage.py", line 111, in <module>
ps=sf._canvas.postscript(file=input, colormode='color')
File "C:\Users\Ing\Documents\anaaconda\lib\tkinter\__init__.py", line 2592, in postscript
self._options(cnf, kw))
TclError: invalid command name ".!scrolledframe.!canvas"
答案 0 :(得分:0)
通过将root.mainloop()
放在grid_function
中,该函数直到窗口被销毁后才返回。然后,您尝试在窗口小部件上调用方法,但是该窗口小部件不再存在。无论您使用的是ScrolledFrame类还是其他类都是无关紧要的。问题是您要在销毁小部件后尝试访问它们。
您需要重新排列代码,以便在销毁主窗口之前而不是之后调用self._canvas.postscript
。