Windows系统下Tkinter实现窗口最大化且不可调整大小不遮挡任务栏
解决Tkinter窗口最大化遮挡任务栏的问题
你当前代码的问题在于调用root.state('zoomed')后立即锁定窗口大小,此时Tkinter还未根据系统任务栏的位置调整窗口尺寸,导致窗口覆盖任务栏。以下两种方法可以解决这个问题:
方法一:先最大化再锁定正确尺寸
先让窗口进入最大化状态,等待Tkinter完成布局后获取实际窗口尺寸,再锁定大小:
from tkinter import * root = Tk() root.state('zoomed') # 等待窗口完成最大化布局,确保获取到正确的尺寸 root.update_idletasks() current_width = root.winfo_width() current_height = root.winfo_height() # 锁定窗口不可调整大小 root.resizable(False, False) # 重新设置窗口尺寸为最大化后的正确值 root.geometry(f"{current_width}x{current_height}") root.mainloop()
方法二:直接设置为系统工作区尺寸
通过获取系统工作区的尺寸(自动排除任务栏占用的区域),直接将窗口设置为该尺寸并锁定:
from tkinter import * root = Tk() # 获取系统工作区的宽高(不含任务栏) work_width = root.winfo_vrootwidth() work_height = root.winfo_vrootheight() # 设置窗口尺寸为工作区大小,位置从左上角开始 root.geometry(f"{work_width}x{work_height}+0+0") # 禁用窗口大小调整 root.resizable(False, False) root.mainloop()
第二种方法更稳定,不需要依赖窗口最大化后的布局过程,直接一步到位适配系统可用空间。
内容的提问来源于stack exchange,提问作者DBGT
相关产品推荐
相关产品推荐

