gpt4 book ai didi

Python tkinter : button disappearing after label update

转载 作者:行者123 更新时间:2023-12-01 04:36:23 25 4
gpt4 key购买 nike

我已经使用 Python 有一段时间了,并且我使用 GUI 制作了一些应用程序。当我编写新应用程序时,我遇到了 tkinter 的一些行为,我认为这很奇怪。

考虑以下代码:

from tkinter import *

root = Tk()
root.geometry('200x200')

label = Label(root, bg='green', text='0', font=('arial', 40, 'bold'))
label.place(x=0, y=0, width=200, height=200)

def add():
label['text'] = int(label['text']) + 1
if label['text'] == 10:
button.place_forget()

button = Button(root, command=add, text='+1', font=('arial', 20, 'bold'))
button.place(x=50, y=50, width=100, height=100)

root.mainloop()

正如您所期望的,当您运行此代码时,您将看到一个带有绿色背景和一个按钮的小窗口。按该按钮 10 次后,该按钮就会消失,窗口中会显示“10”。

当我为按钮小部件使用不同的父小部件时,就会出现我遇到的问题。例如,当我更改此行时

button = Button(root, command=add, text='+1', font=('arial', 20, 'bold'))

button = Button(label, command=add, text='+1', font=('arial', 20, 'bold'))

用“标签”替换“根”,我的图形用户界面就会出现故障。每次我按下按钮它就会消失。有时它会在几秒钟后重新出现,但有时只有当我尝试单击它时才会重新出现。

经过更多测试后,我发现每次父标签更新时该按钮都会消失。

我想知道;为什么会发生这种情况?有没有办法在不使用“root”作为按钮父级的情况下解决问题(这会使我的应用程序变得更加复杂,或者至少会迫使我重建很多 gui 内容)

我试图查找有关此问题的信息,但找不到任何信息。

最佳答案

我认为您看到这种行为没有充分的理由。我在 OSX 上看不到它,但 OSX 按钮的行为与其他平台有点不同。使用标签作为另一个窗口的父窗口应该完全没问题,而不会看到这种闪烁。

一种可能的解决方法是在重新配置标签时调用按钮小部件上的 lift。也许您的堆叠顺序发生了变化,导致标签位于按钮上方。

最后,您是否知道可以使用具有相对坐标的位置,并且即使没有父/子关系,小部件也可以相对于其他小部件?您似乎担心,如果无法以父/子关系创建两个小部件,则必须更改大量代码。

例如,您可以创建小部件并调用 place,如下所示:

button = Button(root, command=add, text='+1', font=('arial', 20, 'bold'))
button.place(in_=label, relx=0, rely=0, relwidth=1, relheight=100)

您需要确保堆叠顺序正确。最简单的方法是确保在创建标签后的某个时间创建按钮。

关于Python tkinter : button disappearing after label update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com