本文翻译自:PyQt5 Widgets
QLineEdit是一个用户可以用来通过打字输入的方式进行单行文本编辑的widget。这些用于表单字段或设置,其中没有有效输入的限制列表。比如,当输入电子邮件地址,或计算机名称:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import (
QApplication,
QCheckBox,
QComboBox,
QDoubleSpinBox,
QLabel,
QLineEdit,
QListWidget,
QMainWindow,
QSlider,
QSpinBox,
)
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("My App")
widget = QLineEdit()
widget.setMaxLength(10)
widget.setPlaceholderText("Enter Your Text")
widget.returnPressed.connect(self.return_pressed)
widget.selectionChanged.connect(self.selection_changed)
widget.textChanged.connect(self.text_changed)
widget.textEdited.connect(self.text_edited)
self.setCentralWidget(widget)
def return_pressed(self):
print("Return pressed!")
self.centralWidget().setText("BOOM!")
def selection_changed(self): # 处理鼠标的点击
print("Selection changed!")
print(self.centralWidget().selectedText())
def text_changed(self, s): # 改变文本
print("Text changed ... ")
print(s)
def text_edited(self, s): # 编辑文本
print("Text edited ... ")
print(s)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
运行结果:
就像上述代码描述的那样,你可以使用setMaxLength()设置行编辑框中文本的最大长度。QLineEdit有若干个信号适合于不同的编辑事件,包括当回车键被用户按下,以及当用户选择改变时。这里也有两个编辑信号,一个是当行中文本已经被编辑,一个是当行中文本已经被改变。只有当用户编辑文本时,信号textEdited才会发出。
此外,可以使用输入掩码来执行输入验证,以定义支持哪些字符以及支持哪些字符。比如向下面这样:
widget.setInputMask('000.000.000.000;_')
这可以被用来验证IPv4地址