PyQt5 – QLineEdit小工具
QLineEdit对象是最常用的输入域。它提供了一个可以输入一行文本的框。为了输入多行文本,需要QTextEdit对象。
下表列出了QLineEdit类的一些重要方法—-。
Sr.No. | 方法和描述 |
---|---|
1 | setAlignment() 按照对齐方式常数Qt.AlignLeft Qt.AlignRight Qt.AlignCenter Qt.AlignJustify来对齐文本。 |
2 | clear() 擦除内容 |
3 | setEchoMode() 控制方框内文本的外观。回音模式的值是 – QLineEdit.Normal QLineEdit.NoEcho QLineEdit.Password QLineEdit.PasswordEchoOnEdit |
4 | setMaxLength() 设置输入的最大字符数 |
5 | setReadOnly() 使得文本框不可编辑。 |
6 | setText() 以编程方式设置文本 |
7 | text() 检索字段中的文本 |
8 | setValidator() 设置验证规则。可用的验证器有 QIntValidator – 限制输入为整数 QDoubleValidator – 数字的分数部分限制为指定的小数 QRegexpValidator – 根据Regex表达式检查输入。 |
9 | setInputMask() 应用字符组合的掩码进行输入。 |
10 | setFont() 显示QFont对象的内容 |
QLineEdit对象会发出以下信号 –
以下是最常用的信号方法。
Sr.No. | 方法和描述 |
---|---|
1 | cursorPositionChanged() 每当游标移动时 |
2 | editingFinished() 当你按下’Enter’或字段失去焦点时 |
3 | returnPressed() 当你按下’Enter’时 |
4 | selectionChanged() 每当选定的文本发生变化时 |
5 | textChanged() 当方框中的文本通过输入或编程方式发生变化时 |
6 | textEdited() 每当文本被编辑的时候 |
示例
本例中的QLineEdit对象演示了其中一些方法的使用。
第一个字段e1使用自定义字体显示文本,右对齐,允许整数输入。第二个字段将输入限制为小数点后有2个数字的数字。在第三个字段上应用了输入电话号码的输入掩码。字段e4上的textChanged()信号被连接到textchanged()槽方法。
e5字段的内容在密码形式下被呼应,因为它的EchoMode属性被设置为密码。它的 editingfinished() 信号被连接到 presenter() 方法。因此,一旦用户按下回车键,该函数将被执行。字段e6显示了一个默认的文本,它不能被编辑,因为它被设置为只读。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def window():
app = QApplication(sys.argv)
win = QWidget()
e1 = QLineEdit()
e1.setValidator(QIntValidator())
e1.setMaxLength(4)
e1.setAlignment(Qt.AlignRight)
e1.setFont(QFont("Arial",20))
e2 = QLineEdit()
e2.setValidator(QDoubleValidator(0.99,99.99,2))
flo = QFormLayout()
flo.addRow("integer validator", e1)
flo.addRow("Double validator",e2)
e3 = QLineEdit()
e3.setInputMask('+99_9999_999999')
flo.addRow("Input Mask",e3)
e4 = QLineEdit()
e4.textChanged.connect(textchanged)
flo.addRow("Text changed",e4)
e5 = QLineEdit()
e5.setEchoMode(QLineEdit.Password)
flo.addRow("Password",e5)
e6 = QLineEdit("Hello Python")
e6.setReadOnly(True)
flo.addRow("Read Only",e6)
e5.editingFinished.connect(enterPress)
win.setLayout(flo)
win.setWindowTitle("PyQt")
win.show()
sys.exit(app.exec_())
def textchanged(text):
print "contents of text box: "+text
def enterPress():
print "edited"
if __name__ == '__main__':
window()
输出
上述代码产生了以下输出 —
contents of text box: h
contents of text box: he
contents of text box: hel
contents of text box: hell
contents of text box: hello
editing finished