如何获取 tkinter 窗口标题栏的高度

2023-11-21

我试图弄清楚如何获取 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: enter image description here The same: enter image description here

使它们相同并获得标题栏的正常高度:

import tkinter
import ctypes

ctypes.windll.shcore.SetProcessDpiAwareness(2)
print(ctypes.windll.user32.GetSystemMetrics(4))
root = tkinter.Tk()

root.mainloop()

Result: enter image description here enter image description here

参考: MSDN 文档:获取系统指标,DPI 意识(DPI 意识的价值).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 tkinter 窗口标题栏的高度 的相关文章

  • 在 tkinter 和 python 中嵌套网格和框架

    我正在尝试在更大的网格结构中的框架内设置一个网格 我试图将其提炼为问题的最简单版本 from tkinter import Tk Frame Label Entry root Tk root geometry 800x800 frame1
  • 从正在运行的 python 脚本检测优化标志是否为 -O 或 -OO

    有时我想生成一个子进程 其优化标志与启动父进程时使用的优 化标志相同 我可以使用类似的东西 optimize not debug 但这样我就可以匹配两者 O and OO flags 是否有一些 python 内部状态包含该信息 经过一番深
  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • 在Python3.6中调用C#代码

    由于完全不了解 C 编码 我希望在我的 python 代码中调用 C 函数 我知道有很多关于同一问题的问答 但由于一些奇怪的原因 我无法从示例 python 模块导入简单的 c 类库 以下是我所做的事情 C 类库设置 我使用的是 VS 20
  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • Python 3 __getattribute__ 与点访问行为

    我读了一些关于 python 的对象属性查找的内容 这里 https blog ionelmc ro 2015 02 09 understanding python metaclasses object attribute lookup h
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • 为什么 Python 中的“pip install”会引发语法错误?

    我正在尝试使用 pip 安装软件包 我试着跑pip install从Python shell 但我得到了SyntaxError 为什么我会收到此错误 如何使用 pip 安装软件包 gt gt gt pip install selenium
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 创建一个类似于 Tkinter 的表

    我希望创建类似于 Tkinter 中的表格的东西 但它不一定是这样的 例如 我想创建标题 Name1 Name2 Value 并在每个标题下面有几个空白行 然后 我希望稍后用我计算的值或名称的字符串值填充这些行 因此是标签 对于 Name2
  • 如何在 Python 中将彩色输出打印到终端?

    是否有与 Perl 等效的 Python 语言 print color red print
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 为什么我们应该在 def __init__(self, n) -> None: 中使用 -> ?

    我们为什么要使用 gt in def init self n gt None 我读了以下摘录来自 PEP 484 https www python org dev peps pep 0484 the meaning of annotatio
  • 检查字符串是否只有字母和空格 - Python

    试图让 python 返回一个字符串仅包含字母和空格 string input Enter a string if all x isalpha and x isspace for x in string print Only alphabe

随机推荐

  • 从外部解决方案使用 Windows 服务中托管的 WCF 服务

    我使用以下演练设置了一个托管在 Windows 服务中的 WCF 库 http msdn microsoft com en us library ff649818 aspx 消费者 winforms 位于相同的解决方案中 该解决方案位于我的
  • 如何引用不同工作表上同名的图表?

    我有两个包含图表的工作表 并使用宏来运行所有包含图表的工作表并更新绘制的值 但是 当我尝试在第一个图表之后引用工作表中的图表时 我遇到了问题 尽管工作表的引用发生了变化 但对图表的引用却没有变化 循环看起来像这样 For Each ws I
  • Flutter:检测键盘打开和关闭[重复]

    这个问题在这里已经有答案了 我有一个BottomNavigationBar在我的应用程序的最上层 我想检测应用程序 子树中基本上任何位置的键盘打开和关闭 这样我就可以显示和隐藏BottomNavigationBar每当键盘可见时 这是一个普
  • 如何从 Rust 写入特定的原始文件描述符?

    我需要写入文件描述符 3 我一直在寻找它 但文档很差 我唯一发现的是使用libc图书馆和fdopen方法 但我还没有找到任何关于如何使用它或在其上编写的示例 谁能给我提供一个在 Rust 中写入文件描述符的示例 您可以使用FromRawFd
  • 使用 OCaml 解析语法

    我有一个任务是使用 OCaml 为 玩具 语法编写一个 玩具 解析器 但不确定如何开始 并继续 这个问题 下面是一个 Awk 语法示例 type nonterm term symbol N of nonterm T of term type
  • Microsoft Teams 来电事件

    我想创建一个应用程序 当用户在 MS Teams 中接到电话时会收到通知 我的意思是我想在来电事件中订阅一些内容 然后根据来电信息执行某些操作 这可能吗 到目前为止 我在 SDK 中没有看到任何事件 现在似乎有一个功能可能适合这个 通话记录
  • 当输出分配给变量时获取管道的退出代码(命令替换)[重复]

    这个问题在这里已经有答案了 获取管道命令的退出代码工作正常 echo ABC false true echo PIPESTATUS 0 PIPESTATUS 1 PIPESTATUS 2 Output is 0 1 0 但是当我将输出分配给
  • 可以在套接字上使用 SO_LINGER 设置的“逗留时间”究竟是多少?

    手册页对这个选项几乎没有任何解释 虽然网络上和 StackOverflow 上的答案中有大量可用信息 但我发现那里提供的许多信息甚至是自相矛盾的 那么该设置的真正用途是什么 为什么我需要设置或更改它 当 TCP 套接字断开连接时 系统必须考
  • 为什么在 -[_PFManagedObjectReferenceQueue _queueForDealloc:] 中释放托管对象可能会崩溃?

    我偶尔会看到像这样的堆栈跟踪崩溃 0 libobjc A dylib 0x97dc0edb objc msgSend 27 1 com apple CoreData 0x97edcdc2 PFManagedObjectReferenceQu
  • Azure 权限:无权执行此操作

    所以我有一个数据工厂 它调用一个读取 blob 存储的 Azure 函数 我不明白为什么我会收到此错误 此请求无权执行此操作 是数据工厂 azure 存储还是azure 功能的问题吗 我还向 Storage Blob Data Contri
  • iPhone SDK NSString 转 NSDate

    我通过解析 XML 文件得到了一个字符串 如下所示 Fri 09 Apr 2010 00 00 45 0200 相应的模式应该是 EEE dd MMM yyyy HH mm ss ZZ 但我得到 空 这是我的代码 NSString date
  • 为什么可以将 nullptr 分配给 std::string?

    所以今天我写了一个相当难发现的错误 我将 std string 初始化为 nullptr 不是指向 std string 的指针 而是值本身 我发现显然只能在 C 11 或更高版本中使用 clang 来完成 include
  • 将 ID 添加到 GridView 行

    如何向 GridView 行添加 ID 应该呈现 ID 我正在使用 NET C 我有 GridView 控件 我有一些操作表行的 javascript 函数 但必须有这些行的 ID table tr tr id should come fr
  • 如何在 Android 中对图像应用缩放、拖动和旋转 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人可以告诉我在 Android 应用程序中对图像应用缩放 拖动和旋转的教程吗 尝试使用下面的代码它对我有用 float lastEvent nul
  • 使用 Oauth 通过 Gmail 进行身份验证后,有没有办法获取您的电子邮件地址?

    在 Python Web 应用程序中 我可以使用 OAuth 和 IMAP 连接到 Gmail OAuth 只需使用您当前登录的任何 Google 帐户 并要求您授予对网络应用程序的访问权限 但是 它不提供 API 来实际检索该帐户的电子邮
  • HttpRequestMessage 和摘要式身份验证

    winrt 中是否有任何内置函数可以将摘要身份验证与 HttpRequestMessage 相关联 或者我是否必须使用其他类才能执行此任务 Thanks 我正在使用HttpClient对于 HttpRequest 消息 这HttpClien
  • 在android编程中使用实用程序类

    我对实用程序类有一点了解 但对需求略有疑问 如果我在我的应用程序中使用实用程序类而不是在我的主活动中使用该类 我是否必须创建该类的对象 或者我可以直接在我的主活动中导入该类吗 如果我没有表达清楚的话 我很抱歉 简而言之 我想清楚的是 基本上
  • 从 XML 中获取具有特定名称的所有节点的值

    我无法以最有效的方式从 XML 获取具有特定名称的节点的所有值 例如 h1 h1
  • 如何用最少的指令将两个四元数相乘?

    经过一番思考 我想出了以下使用 SSE 乘以两个四元数的代码 include
  • 如何获取 tkinter 窗口标题栏的高度

    我试图弄清楚如何获取 tkInter 窗口标题栏的高度 但似乎找不到任何有关如何完成的信息 我尝试过使用root geometry 看来root geometry 仅返回窗口内容的大小 而不返回带有标题栏和边框大小的窗口的总大小 我见过其他