我正在使用基于 PySide 的 GUI。我制作了一个(一行)文本框QLineEdit
输入的长度只有四个字符,我已经成功应用了这一限制。
问题是我的文本框比需要的宽(即文本后面有很多未使用的空间)。如何缩短文本框的长度?
我知道通过使用 Designer 设计文本框可以轻松解决这个问题;但是,这个特定的文本框不是在 Designer 中创建的。
看着source of QLineEdit.sizeHint()
人们发现,行编辑通常足够宽,可以显示 17 个拉丁“x”字符。我尝试在 Python 中复制此内容并将其更改为显示 4 个字符,但由于 Qt 的 Python 绑定的限制,我无法正确获取行编辑的样式相关边距。
一个简单的:
e = QtGui.QLineEdit()
fm = e.fontMetrics()
m = e.textMargins()
c = e.contentsMargins()
w = 4*fm.width('x')+m.left()+m.right()+c.left()+c.right()
在我的例子中返回 24,但这不足以在 QLineEdit 中显示“abcd”等四个字符。更好的值约为 32,您可以这样设置。
e.setMaximumWidth(w+8) # mysterious additional factor required
即使在许多系统上更改了字体,这可能仍然没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)