如何用if语句检测Python Tkinter窗口尺寸?现有代码无法运行
解决Tkinter窗口尺寸检测的问题
你的代码存在三个关键问题,导致无法达到预期效果:
未正确调用
geometry方法root.geometry是方法对象本身,不是尺寸返回值,必须添加括号root.geometry()才能获取当前窗口的几何尺寸字符串。代码执行顺序错误
你在创建root窗口对象之前就尝试访问它,这会直接抛出NameError——因为root变量还未定义。必须先创建窗口、设置尺寸,再执行尺寸判断逻辑。geometry()返回值包含额外位置信息
默认情况下,geometry()返回的字符串格式是宽x高+水平偏移+垂直偏移(比如300x300+100+100),直接和"457x450"对比会不匹配,需要提取纯尺寸部分。
修正后的代码示例:
from tkinter import Tk root = Tk() root.geometry("300x300") # 提取纯宽高部分,忽略位置偏移信息 current_size = root.geometry().split('+')[0] if current_size == "457x450": print("The window is 457x450 pixels!") else: print("The window is not 457x450!") root.mainloop()
代码说明:
- 先完成窗口对象的创建与尺寸设置,再执行检测逻辑
- 通过
split('+')[0]将返回的几何字符串按+分割,取第一部分得到纯宽x高格式的尺寸字符串 - 此时再进行字符串对比,就能准确判断窗口尺寸是否符合预期
内容的提问来源于stack exchange,提问作者Canofeggs 5410
相关产品推荐
相关产品推荐

