如何获取字符串的像素宽度?
我正在使用wxPython的HyperTreeList控件,想要把某一列的宽度设置成和里面最长的字符串一样长。
为了做到这一点,我需要把Python中的字符串长度转换成像素。
举个例子:如果我们有一个这样的字符串
str = "python"
len(str) = 6
我该如何把上面这个字符串的长度转换成像素呢?
还有其他方法吗?
3 个回答
0
这不是我的解决方案,我只是把它分享出来,因为我发现这个方法很好用。在程序环境中,它只需要三行代码就能完成。适用于Python3.9和mac OS。
from tkinter import *
from tkinter import font as W1
FW=Tk() ; FW.withdraw() # a must but don't need a window
Text ='1234567890'
def LENGTH(Text) :
W2 = W1.Font(family='Comicsans' , size = 20)
length = W2.measure(Text)
print(length)
LENGTH(Text)
11
这要看你是怎么打印文本的。
你可能会对 PIL ImageDraw
感兴趣,它有一个 textsize
方法。你可以查看这个链接了解更多信息:http://effbot.org/imagingbook/imagedraw.htm
更新:这是在回答最初的问题。随着问题的更新,可能看起来有点偏题。
14
你需要做一些事情,像是这个链接里提到的那样,或者参考这个链接中的内容(更多信息可以查看wxWidgets的文档)
f = window.GetFont()
dc = wx.WindowDC(window)
dc.SetFont(f)
width, height = dc.GetTextExtent("Text to measure")