tkinter create_window删除上一个窗口

时间:2013-07-23 18:52:29

标签: python window tkinter

出于某种原因,当我在我的Tkinter画布中转到create_window时,它会删除之前在所述窗口中的所有内容,并将窗口锁定在左上角(即使我将其设置在其他位置。

canvas.create_window(30, height - 40, anchor = NW, width = 40,
    window = canvas.data.buildSquareButton)

之前
canvas.create_rectangle(0,0,width, 40, fill = "#888888888",
                        outline = "#888888888")
canvas.create_rectangle(0, height, width, (height-40), fill = "#888888888",
                        outline = "#888888888")
canvas.create_rectangle(0, 40, width, (height - 40), fill = "#fffffffff",
                        outline = "#fffffffff")

和图像。

我在create_window之后放了1秒time.sleep,我可以看到按钮放在正确的位置。然后在time.sleep结束后,按钮投掷在右上角,矩形从未出现过。我评论了窗外,矩形显得很好。

当我打电话给窗户时,我做错了什么,或者是否有Tkinter故障?

2 个答案:

答案 0 :(得分:0)

您的问题中没有足够的信息可以肯定地知道。但是,我的猜测是你在画布中packgrid一个小部件,这会导致画布缩小以适应其内容。或者,你正在做其他事情以使画布缩小。

要解决问题,您的画布可能与主窗口具有相同的背景颜色,因此您认为内容正在被删除,但实际上您正在查看画布的小部件而不是画布本身。

为了帮助证明或反驳这一理论,请为您的画布添加鲜艳的背景颜色,例如鲜红色。然后运行你的代码,看看屏幕的红色部分会发生什么。

结论:tkinter中没有可能导致您描述的行为的错误。某些代码中有一个错误,您没有向我们展示。

最好的办法是创建一个可以重现问题的最小程序。仅仅尝试这样做可能会暴露代码中的错误。如果您能够在十几行或两行代码中重现它,请更新问题,我们可能会发现错误。

答案 1 :(得分:0)

我不完全确定你的问题是什么,但看起来你试图从代码中的某一点删除画布小部件中的所有内容以允许其他内容覆盖它,是吗?

尝试此操作以重置画布:canvas.delete("all")