- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 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/
我遇到过这个 html: 上面的html和这个有什么区别: 最佳答案 来自MDN page on the tag : 对于 type 的属性标签,可能的值是: 提交:按钮将表单数据提交给服务器
Button button= (Button) findViewbyID(R.id.button); 和 Button button = new Button(this); 有什么区别? 最佳答案 有
我是一名优秀的程序员,十分优秀!