Aly*_*ono 5 python user-interface tkinter button python-3.x
我想隐藏 tkinter 按钮,但不是在用户单击它时隐藏。我只是想在随机的时候隐藏它。我将如何在 Python 中做到这一点?下面是我尝试过的代码:
self.startGame = Button(self.canvas, text="Start", background='white', command = self.startGame, font=("Helvetica"))
self.startGame.place(x=770, y=400)
Run Code Online (Sandbox Code Playgroud)
隐藏它:
self.startGame.bind('<Button-1>', self.hide_me)
def hide_me(self, event):
print('hide me')
event.widget.pack_forget()
Run Code Online (Sandbox Code Playgroud)
它甚至没有进入hide_me函数内部。
正如评论中所指出的,您应该使用place_forget()使用在屏幕上设置的小部件place()。
pack()和也是如此grid()。您将分别使用pack_forget()和grid_forget()。
这是您的代码的修改示例。
import tkinter as tk
class Example(tk.Tk):
def __init__(self):
super().__init__()
canvas = tk.Canvas(self)
canvas.pack()
self.startGame = tk.Button(canvas, text="Start", background='white', font=("Helvetica"))
self.startGame.place(x=150, y=100)
self.startGame.bind('<Button-1>', self.hide_me)
def hide_me(self, event):
print('hide me')
event.widget.place_forget()
if __name__ == "__main__":
Example().mainloop()
Run Code Online (Sandbox Code Playgroud)
也就是说,您不需要在这里绑定。只需在命令中使用 lambda 语句,如下所示:
import tkinter as tk
class Example(tk.Tk):
def __init__(self):
super().__init__()
canvas = tk.Canvas(self)
canvas.pack()
self.startGame = tk.Button(canvas, text="Start", background='white', font=("Helvetica"),
command=lambda: self.hide_me(self.startGame))
self.startGame.place(x=150, y=100)
def hide_me(self, event):
print('hide me')
event.place_forget()
if __name__ == "__main__":
Example().mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35991 次 |
| 最近记录: |