tkinter python 最大化窗口
Posted
技术标签:
【中文标题】tkinter python 最大化窗口【英文标题】:tkinter python maximize window 【发布时间】: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 脚本中
此外,我需要获取窗口的宽度和高度(无论是最大化还是用户之后重新缩放),但我想我可以自己找出来。
【问题讨论】:
【参考方案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 窗口管理器完全忽略该窗口,因此该窗口没有框架或标题栏。以上是关于tkinter python 最大化窗口的主要内容,如果未能解决你的问题,请参考以下文章