【问题标题】:tkinter python maximize windowtkinter python 最大化窗口
【发布时间】:2013-04-05 13:11:48
【问题描述】:

我想将一个窗口初始化为最大化,但我不知道该怎么做。我在 Windows 7 上使用 python 3.3 和 Tkinter 8.6。我想答案就在这里:http://www.tcl.tk/man/tcl/TkCmd/wm.htm#m8 但我不知道如何将它输入到我的 python 脚本中

此外,我需要获取窗口的宽度和高度(无论是最大化还是用户之后重新缩放),但我想我可以自己找出来。

【问题讨论】:

    标签: python-3.x tkinter


    【解决方案1】:

    您可以使用此代码

    import tkinter as tk
    window = tk.Tk()
     
    window.attributes('-zoomed',True)
    
    window.mainloop()
    

    【讨论】:

      【解决方案2】:

      使用 TkAgg 作为后端,这是在没有全屏的情况下最大化窗口的唯一组合:

      win_manager = plt.get_current_fig_manager()
      win_manager.window.state('zoomed')
      win_manager.full_screen_toggle()
      

      【讨论】:

        【解决方案3】:

        我在其他网站上找到了这个:

            import Tkinter
        
            MyRoot = Tkinter.Tk()
            MyRoot.state("zoomed")
        
            MyRoot.mainloop()
        

        这解决了我的问题。

        【讨论】:

        • 非常感谢@rpecas...这是最简单的一个
        • @user3292534 的answer 的副本。
        【解决方案4】:

        最pythonic的是“@J.F.Sebastian提到的root.wm_state('zoomed')

        【讨论】:

        • 无法使用 Tkinter 8.6 在 Python3.6 上工作。不允许使用zoomed
        【解决方案5】:

        第一种方法是使用root.state('zoomed'),但不应该是普遍可用的。它适用于 Windows 和我的 Ubuntu 机器。但是,在我的 Arch 机器下却没有。


        第二种是先获取maxsize,然后手动设置geometry,如:

        m = root.maxsize()
        root.geometry('{}x{}+0+0'.format(*m))
        

        这适用于大多数机器,但并非所有机器。例如,在我的 Arch 下,maxsize() 返回(1425, 870),而最大化窗口的真实几何形状应该是(1440, 848)。所以,你也不能依赖它。


        第三个,我认为最好的方法是使用root.wm_attributes('-zoomed', 1)。它是普遍可用的,似乎是最安全的。在某些机器上,in 只能按宽度或高度进行缩放,但与以前的方法相比,这种方法永远不会为您提供部分位于屏幕之外的窗口。

        最后,如果您想要全屏,而不仅仅是缩放窗口,请使用root.wm_attributes('-fullscreen', 1)。它提供了到窗口管理器行为的本机链接,因此比使用overrideredirect 和手动设置几何图形(在某些平台上可能导致非托管窗口,只能通过其自己的界面关闭或终止进程)工作得更好, 不会显示在任务栏等...)

        【讨论】:

          【解决方案6】:

          你可以通过调用来做到这一点

          root.state('zoomed')
          

          【讨论】:

          • 像魅力一样工作,这是唯一真正为我工作的人
          • 也适用于 windows,不像 root.attributes('-zoomed', True)。
          • 这就是我想要的。 :)
          • 在 python 3.9 中工作 |窗户 |
          【解决方案7】:

          要显示带有标题栏的最大化窗口,请使用“缩放”属性

          root = Tk()
          root.attributes('-zoomed', True)
          

          【讨论】:

          • 它可能仅适用于 Windows。你也可以这样说:root.wm_state('zoomed')
          • 它不仅适用于 Windows。它在 Xubuntu 上运行良好。
          • 适用于 Ubuntu 14.04 - J.F 下次最好检查一下自己。
          • 正如其他人所说,'-zoomed' 在 Windows 版本上不可用。
          • 无法在 Python3.6、Tkinter 3.8 上使用 XFCE 不稳定的 Debian。
          【解决方案8】:

          如果要设置全屏属性为True,很简单:

          root = Tk()
          root.attributes('-fullscreen', True)
          

          但是,它不显示标题栏。如果你想让它保持可见,你可以使用geometry() 方法调整 Tk 元素的大小:

          root = Tk()
          w, h = root.winfo_screenwidth(), root.winfo_screenheight()
          root.geometry("%dx%d+0+0" % (w, h))
          

          使用winfo_width()winfo_height() 可以获取宽度和高度或窗口,还可以将事件处理程序绑定到<Configure> 事件:

          def resize(event):
              print("New size is: {}x{}".format(event.width, event.height))
          
          root.bind("<Configure>", resize)
          

          【讨论】:

          • 还有root.overrideredirect(True)(去掉标题栏)
          • 只要我有一台显示器,它就可以工作。如何更改代码以仅在一台显示器上最大化,而不是在整个虚拟桌面上最大化?
          • 出色的工作,这两种解决方案都取决于您是否需要标题栏。
          • 这不会最大化窗口,正如您在右上角的三个小按钮上看到的那样。使用整个屏幕不同于最大化一个窗口。
          • 由于标题栏和窗口管理器的其他内容,将窗口位置设置为 0|0 在窗口上不起作用。 @jfs 但是 Tk.overrideredirect 函数不会直接将其删除。而是(在 Windows 上)告诉 Windows 窗口管理器完全忽略该窗口,因此该窗口没有框架或标题栏。
          猜你喜欢
          • 1970-01-01
          • 2016-11-27
          • 1970-01-01
          • 2021-12-31
          • 1970-01-01
          • 1970-01-01
          • 2021-03-14
          • 2023-01-17
          相关资源
          最近更新 更多