我知道已经问了很多类似的问题,但是我已经设法弄清楚了两个小时,但是我什么也没找到。我想在Tkinter窗口中有一个仅在鼠标悬停时可见的按钮。到目前为止,我未能使按钮最初不可见(我对事件和东西很熟悉,这不是这个问题的意思)pack_forget()无法正常工作,因为我希望将小部件保持在原位。我想要某种方法,如下面的代码所示:
import tkinter as tki
class MyApp(object):
def __init__(self, root_win):
self.root_win = root_win
self.create_widgets()
def create_widgets(self):
self.frame1 = tki.Frame(self.root_win)
self.frame1.pack()
self.btn1 = tki.Button(self.frame1, text='I\'m a button')
self.btn1.pack()
self.btn1.visible=False #This doesnt't work
def main():
root_win = tki.Tk()
my_app = MyApp(root_win)
root_win.mainloop()
if __name__ == '__main__':
main()
是否可以直接设置窗口小部件的可见性?如果没有,还有什么其他选择?
答案 0 :(得分:2)
使用网格作为几何管理器并使用:
self.btn1.grid_remove()
它将记住它的位置。
答案 1 :(得分:1)
您可以尝试使用事件调用功能。 如果按钮出现“ Enter”,则调用一个调用pack()的函数 如果按钮出现“ Leave”,则调用一个调用pack_forget()的函数。
检查此链接以获取事件描述:List of All Tkinter Events
如果您希望按钮停留在定义的位置,则可以使用place(x,y)代替pack()