我试图保存tkinter画布的当前状态,以便以后显示。以下是我尝试使用deepcopy
的方法:
from tkinter import *
from copy import deepcopy
root=Tk()
cv=Canvas(root)
cv.pack()
cvcopy=deepcopy(cv)
mainloop()
但是cvcopy=deepcopy(cv)
行会产生错误:
因为显然你不能只创建一个新的小部件。下面是我用来在turtle
屏幕上嵌入和绘制的代码:
cv = tkinter.Canvas(self.root,width=300,height=300)
cv.pack()
t = turtle.RawTurtle(cv)
s = t.getscreen()
def toggledown():
if t.isdown():
t.penup()
else:
t.pendown()
t.speed(0)
t.ondrag(t.goto)
s.onclick(t.goto)
s.onkey(toggledown, 'space')
s.listen()
有人知道如何复制屏幕,然后再添加到其他地方吗?在
无法复制小部件,但是,如果同时创建相同的小部件,但不调用几何图形管理器,则可以稍后将其添加到屏幕:
在这种情况下,还可以通过为画布创建类来节省时间:
^{pr2}$这里有一些东西似乎可以完成你想要的。这并不是一个完整的例子,而是一种实现复制目标的方法。在
您的问题中没有任何代码实际上在
Canvas
上绘制了一些内容,因此我从tutorial中借用了一些代码,我使用了我发现的tkinter
来生成一个带有几个小部件的Canvas
,以便于说明。它生成一个如下所示的窗口,其中包含一个Button
和一个Canvas
小部件,其中仅包含三个不同颜色的矩形小部件:下面是演示代码,演示如何迭代
Canvas
上当前的所有小部件:当按下复制按钮时,它会打印出以下内容:
^{pr2}$你不能做什么。小部件不是纯python对象。它们的大部分状态都在嵌入式tcl解释器中。您根本无法复制这样的tkinter小部件。在
简而言之,没有办法复制tkinter小部件。您所能做的最好的方法是使用
configure
方法来获取小部件的所有配置选项,然后使用相同的选项创建一个新的小部件。即使这样,它也不会存储内部状态,如画布上的图形、文本小部件中的文本等相关问题 更多 >
编程相关推荐