我试图弄清楚如何获取 tkInter 窗口标题栏的高度,但似乎找不到任何有关如何完成的信息。
我尝试过使用root.geometry()
看来root.geometry()
仅返回窗口内容的大小,而不返回带有标题栏和边框大小的窗口的总大小。我见过其他人说你需要向操作系统询问这些事情。我希望避免这种情况,因为这将使代码平台独立变得更加困难。必须有一种方法可以做到这一点,而无需访问操作系统。有人知道我必须做什么才能获取此信息吗?
我的系统:
OS: Linux
KDE 等离子: 5.16.4
KDE 框架: 5.61.0
import tkinter
root = tkinter.Tk()
root.geometry("250x250+100+100")
root.update_idletasks()
print('root.winfo_x() = ', root.winfo_x())
print('root.winfo_y() = ', root.winfo_y())
print('root.geometry() = ', root.geometry())
root.mainloop()
测试代码结果:
root.winfo_x() = 100
root.winfo_y() = 100
root.geometry() = 250x250+100+100
使用屏幕标尺应用程序测量的窗口高度为:
x=102, y=286
标题栏(默认)是一个系统设置。据我所知,它取决于很多因素。(系统缩放比例、不同的操作系统、DPI 感知等)。
在windows中,改变缩放比例会得到不同的高度值。
关于问题:
tkinter 在 windows 下会被识别为老软件,需要设置 DPI 感知使其具有系统正常高度(如果您的系统缩放比例不是 100%,请适应系统缩放比例)。
Normally,the height of system title bar are same:but some exception(I am not really know about winapi
),different DPI awareness will show you the different height of title bar:
The same:
使它们相同并获得标题栏的正常高度:
import tkinter
import ctypes
ctypes.windll.shcore.SetProcessDpiAwareness(2)
print(ctypes.windll.user32.GetSystemMetrics(4))
root = tkinter.Tk()
root.mainloop()
Result:
参考:
MSDN 文档:获取系统指标,DPI 意识(DPI 意识的价值).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)