因此,在一个框架中,我创建了一个简单的按钮(button1)。这没什么,但重要的是我创建了放在button1上的button2。按钮正常工作。例如,我可以单击button2来忘记button1,这会使button2自动消失,因为它被放置在button1中,而这正是我想要的。但是我遇到了一个奇怪的错误,其中button2有时可见,有时却不可见。您必须四处移动鼠标,有时它会出现并且可以单击,如果您将鼠标移开,它有时会消失。当您单击button1时,它也会消失。但我希望它始终可见。有点像button2的优先级高于button1。我该如何解决这个奇怪的错误?
from tkinter import *
def delete_buttons():
button1.place_forget()
root = Tk()
root.geometry("400x400")
frame = Frame(root, bg="yellow")
frame.place(relx = 0.1, rely=0.1, relwidth=0.8, relheight=0.8)
# button 2 is created on top of button1
button1 = Button(frame, text="this is a button")
button1.place(relx=0.2, rely=0.2, relwidth=0.6, relheight=0.6)
button2 = Button(button1, text="delete 1st and 2nd button", command=delete_buttons)
button2.place(relx=0.1, rely=0.6, relwidth=0.8, relheight=0.3)
root.mainloop()
答案 0 :(得分:0)
按钮可能不打算用作父窗口小部件,因此可能会出现意外行为。
您可以将frame
用作两个按钮的父级,并且仍将它们显示在彼此的顶部。您只需要更仔细地计算位置,因为它现在相对于框架而不是button1
。
# change the delete function to:
def delete_buttons():
button1.place_forget()
button2.place_forget()
# and button2 to:
button2 = Button(frame, text="delete 1st and 2nd button", command=delete_buttons)
button2.place(relx=0.3, rely=0.55, relwidth=0.4, relheight=0.2)