【问题标题】:How do i minimise a Tkinter window如何最小化 Tkinter 窗口
【发布时间】:2021-03-14 20:15:07
【问题描述】:

我试图让用户使用全屏然后能够最小化他们的屏幕,有没有办法在 Tkinter 中做到这一点? 这是我的主窗口代码

def home():
mainbody = Tk()  # main body
mainbody.geometry("1300x800")  # size of window
mainframe = Frame(mainbody)
mainframe.grid()
Button(mainframe, bg="RoyalBlue2", width=12, text="Desktop", command=desktop).grid(row=0, column=0)

我希望用户能够按下“桌面”,这将最小化窗口,而无需按下按钮返回全屏或至少更大的尺寸

def desktop():
goodbye_screen = Tk()
goodbye_screen.geometry("300x300")
Label(goodbye_screen, text="Goodbye!").grid()
goodbye_screen.withdraw()

【问题讨论】:

    标签: python python-3.x user-interface tkinter


    【解决方案1】:

    这是我为您的问题制定的快速解决方案。另外,我不知道你是否打算这样做,但如果你继续重复(variable) = Tk(),窗口就会发生冲突。

    from tkinter import *
    
    window = Tk()
    
    def desktop():
        Label(window, text="Goodbye!").grid()
        window.wm_state('iconic')
    
    def home():
        window.geometry("1300x800")  # size of window
        mainframe = Frame(window)
        mainframe.grid()
        Button(mainframe, bg="RoyalBlue2", width=12, text="Desktop", command=desktop).grid(row=0, column=0)
    
    home()
    

    【讨论】:

    • 不要在 GUI 应用程序中使用time.sleep;它以一种在睡眠发生时完全阻止所有处理(包括简单的重绘;UI 完全冻结)的方式冻结 UI。在这种情况下,您真正​​想要的是像 window.after(500, window.wm_state, 'iconic') 这样安排 window.wm_state('iconic') 调用在 500 毫秒后发生(同时让事件循环正常运行)。
    • 我收到此错误“第 28 行,在主窗口中。window.geometry("1300x800") # 窗口大小 NameError: name 'window' is not defined" 我应该使用桌面(窗口)来解决这个问题吗?我的意图是创建一个模拟医院 gui/应用程序,如果需要,让用户转到桌面而不是退出应用程序
    • @NeoJoker26:您需要在其余代码的上下文中解释它。 window 存在,如果你像 Jacob 那样全局定义它(两个函数在全局命名空间中看到它而不传递它)。 Jacob 使用它而不是在每种方法中创建一个新的Tk(),因为您通常只需要/需要一个根窗口。
    • @ShadowRanger,感谢您告诉我。我已经编辑了代码,虽然它并不真正需要延迟
    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2020-10-01
    • 2016-11-27
    • 1970-01-01
    相关资源
    最近更新 更多