具有标题栏和任务栏的Tkinter窗口

3 投票
1 回答
6232 浏览
提问于 2025-04-18 11:00

我在网上找了很久这个问题,但似乎没有人知道答案。我在Python 2.7中创建了一个简单的tkinter窗口(tcl 8.5),我想让它最大化,就像点击右上角的最大化按钮一样。但是使用-fullscreen选项不行,因为这样会把标题栏去掉。

我尝试了以下方法:

import Tkinter

root = Tkinter.Tk()
root.overrideredirect(True)
# Set window to be size of screen
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))  

问题是现在窗口被Windows的任务栏挡住了,所以我的一些元素看不到。一个简单的解决办法是把窗口的高度设置为屏幕高度减去一个常量,或者根据操作系统的数据来计算这个常量。不过,这样的做法看起来非常不优雅。

有没有什么办法可以在tkinter中以一种干净的方式最大化窗口,让它在(Windows)任务栏上方,并且仍然保留标题栏呢?

1 个回答

7

我知道这个问题已经很老了,但我在一台运行XP系统(32位)、使用Python 2.7.6的电脑上测试了以下代码,使用的是TCL版本8.5和tk版本8.5。

代码:

import Tkinter as tk

root = tk.Tk()

root.state("zoomed")

root.mainloop()

这个代码确实能让窗口在主显示器上最大化打开。
不过也有一些问题——我没办法让它在其他显示器上最大化,但在不遮挡标题栏或任务栏的情况下,它的表现还是很稳定的。

而且因为你想保留标题栏,所以我建议去掉overrideredirect这个设置。

撰写回答