gpt4 book ai didi

python - 为什么 tkfont.Font().measure 返回大值?

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:02 25 4
gpt4 key购买 nike

我一直在开发一个利用 tkinter 的 Python 3.X 应用程序,特别是使用 ttk.Treeview 以便从数据库构建一些表。在测量列的宽度时,似乎返回的值通常太大。

其中val是单元格的值,下面的代码是用来求宽度的:

col_w = tkfont.Font().measure(str(val).rstrip())

这是实践中的最终结果:

Actual result

这是我希望看到的:

Desired result

有什么想法吗?

最佳答案

首先,确保您从 Treeview 中获取正确字体的宽度。

下面给了我两个不同的值:

Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter as tk
>>> from tkinter import font
>>> root = tk.Tk()
>>> print(font.Font().measure('foo'))
22
>>> print(font.nametofont('TkHeadingFont').measure('foo'))
18

接下来,检查列的 stretch 设置,因为它会影响列宽。

此外,您可能希望稍微填充字符串长度,以便为元素提供一些喘息的空间。我在字符串中添加了两个空格,并在布局中考虑了我的标准 X 填充:

# Defined elsewhere in my module
PAD_X = 5

def get_padded_text_width(standard_font, text):
return font.nametofont(standard_font).measure(text + '__') + (2 * PAD_X)

关于python - 为什么 tkfont.Font().measure 返回大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23836340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com