如何限制 QLineEdit 的文本框宽度最多显示四个字符?
How can I limit text box width of QLineEdit to display at most four characters?
我正在使用基于 PySide 的 GUI。我用 QLineEdit
制作了一个(一行)文本框,输入只有四个字符长,我已经成功应用了一个限制。
问题是我的文本框比需要的宽(即文本后有很多未使用的 space)。如何缩短文本框的长度?
我知道这很容易通过使用 Designer 设计文本框来解决;但是,这个特定的文本框不是在 Designer 中创建的。
如果您想要修改 QLineEdit
宽度并修复它,请使用:
#setFixedWidth(int w)
MyLineEdit.setFixedWidth(120)
查看 QLineEdit.sizeHint()
的 source,您会发现一行编辑的宽度通常足以显示 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
即使在许多系统上更改了字体,这可能仍然没问题。
我正在使用基于 PySide 的 GUI。我用 QLineEdit
制作了一个(一行)文本框,输入只有四个字符长,我已经成功应用了一个限制。
问题是我的文本框比需要的宽(即文本后有很多未使用的 space)。如何缩短文本框的长度?
我知道这很容易通过使用 Designer 设计文本框来解决;但是,这个特定的文本框不是在 Designer 中创建的。
如果您想要修改 QLineEdit
宽度并修复它,请使用:
#setFixedWidth(int w)
MyLineEdit.setFixedWidth(120)
查看 QLineEdit.sizeHint()
的 source,您会发现一行编辑的宽度通常足以显示 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
即使在许多系统上更改了字体,这可能仍然没问题。