You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tkinter中创建仅占全屏宽度或高度的窗口?

Tkinter实现单方向全屏窗口(仅宽/仅高占满屏幕)

Tkinter没有原生的单方向最大化标志,你可以通过手动计算屏幕工作区尺寸+精准定位窗口来实现需求,以下是两种场景的可行方案:

一、精准适配Windows工作区(避开任务栏)

如果不想让窗口遮挡任务栏,用ctypes调用系统API获取排除任务栏的工作区信息,再设置窗口尺寸:

import tkinter as tk
import ctypes

root = tk.Tk()
root.title("仅宽占满窗口")

# 获取系统工作区(排除任务栏)的坐标和尺寸
user32 = ctypes.windll.user32
monitor_info = ctypes.create_string_buffer(40)
user32.GetMonitorInfoA(user32.MonitorFromWindow(root.winfo_id(), 0), monitor_info)
# 解析工作区的左上、右下坐标
work_area = ctypes.c_int * 4
work = work_area.from_buffer_copy(monitor_info[20:36])
work_x, work_y = work[0], work[1]
work_width = work[2] - work[0]
work_height = work[3] - work[1]

# 场景1:占满工作区宽度,高度为工作区的1/2,对齐顶部
root.geometry(f"{work_width}x{work_height//2}+{work_x}+{work_y}")

# 场景2:占满工作区高度,宽度为工作区的1/2,对齐左侧
# root.geometry(f"{work_width//2}x{work_height}+{work_x}+{work_y}")

# 可选:固定窗口大小,禁止拖动调整
root.resizable(False, False)

root.mainloop()

二、简单适配(含任务栏区域)

如果不需要避开任务栏,直接用Tkinter自带的屏幕尺寸方法,关键是要指定窗口起始坐标(解决你之前遇到的错位问题):

import tkinter as tk

root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

# 占满全屏宽度,高度为屏幕一半,顶部对齐(x=0,y=0)
root.geometry(f"{screen_width}x{screen_height//2}+0+0")

# 占满全屏高度,宽度为屏幕一半,左侧对齐
# root.geometry(f"{screen_width//2}x{screen_height}+0+0")

root.mainloop()

关键说明

  • 你之前用geometry错位的核心原因是没指定窗口的起始坐标(+x+y部分),加上后就能精准定位;
  • state('zoomed')和-fullscreen=True都是双向最大化,无法单独控制单方向,所以只能手动计算实现。

内容的提问来源于stack exchange,提问作者YurichBRO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:40:24