QLineEdit
单行文本框控件
setAlignment() | 按固定值方式对齐文本: QtAlignLeft,水平方向靠左对齐 |
clear() | 清除文本框内容 |
setEchoMode() | 设置文本框显示格式: QLineEditNoral,正常显示所输入的字符,此为默认选项 |
setPlaceholderText() | 设置文本框浮显文字 |
setMaxLength() | 设置文本框所允许输入的最大字符数 |
setReadOnly() | 设置文本框为只读的 |
setText() | 设置文本框内容 |
Text() | 返回文本框内容 |
setDragEnabled() | 设置文本框是否接受拖动 |
selectAll() | 全选 |
setFocus() | 得到焦点 |
setlnputMask() | 设置掩码 |
setValidator() | 设置文本框的验证器(验证规则),将限制任意可能输入的文本。可用的校验器为: QIntValidator,限制输入整数 QDoubleValidator,限制输入浮点数 QRegexpValidator,检查输入是否符合正则表达式 |
掩码设置
000.000.000.000;_ | IP地址,空白字符是“_” |
HH:HH:HH:HH:HH:HH; | MAC地址 |
0000-00-00 | 日期,空白字符是空格 |
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# | 许可证号,空白字符是“_”,所有字母字符转换为大写 |
常用信号
selectionChanged | 只要选择改变了,这个信号就会被发射 |
textChanged | 当修改文本内容时,这个信号会被发射 |
editingFinished | 当编辑文本结束时,这个信号会被发射 |
setEchoMode的使用效果
代码示例
from PyQt5.QtWidgets import QApplication, QLineEdit , QWidget , QFormLayout
import sys
class lineEditDemo(QWidget):
def __init__(self, parent=None):
super(lineEditDemo, self).__init__(parent)
self.setWindowTitle("QLineEdit例子")
flo = QFormLayout()
pNormalLineEdit = QLineEdit()
pNoEchoLineEdit = QLineEdit()
pPasswordLineEdit = QLineEdit()
pPasswordEchoOnEditLineEdit = QLineEdit()
flo.addRow("Normal", pNormalLineEdit)
flo.addRow("NoEcho", pNoEchoLineEdit)
flo.addRow("Password", pPasswordLineEdit)
flo.addRow("PasswordEchoOnEdit", pPasswordEchoOnEditLineEdit)
pNormalLineEdit.setPlaceholderText("Normal")
pNoEchoLineEdit.setPlaceholderText("NoEcho")
pPasswordLineEdit.setPlaceholderText("Password")
pPasswordEchoOnEditLineEdit.setPlaceholderText("PasswordEchoOnEdit")
# 设置显示效果
pNormalLineEdit.setEchoMode(QLineEdit.Normal)
pNoEchoLineEdit.setEchoMode(QLineEdit.NoEcho)
pPasswordLineEdit.setEchoMode(QLineEdit.Password)
pPasswordEchoOnEditLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)
self.setLayout(flo)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = lineEditDemo()
win.show()
sys.exit(app.exec_())
验证器
代码示例
from PyQt5.QtWidgets import QApplication, QLineEdit , QWidget , QFormLayout
from PyQt5.QtGui import QIntValidator ,QDoubleValidator , QRegExpValidator
from PyQt5.QtCore import QRegExp
import sys
class lineEditDemo(QWidget):
def __init__(self, parent=None):
super(lineEditDemo, self).__init__(parent)
self.setWindowTitle("QLineEdit例子")
flo = QFormLayout()
pIntLineEdit = QLineEdit()
pDoubleLineEdit = QLineEdit()
pValidatorLineEdit = QLineEdit()
flo.addRow("整形", pIntLineEdit)
flo.addRow("浮点型", pDoubleLineEdit)
flo.addRow("字母和数字", pValidatorLineEdit)
pIntLineEdit.setPlaceholderText("整形");
pDoubleLineEdit.setPlaceholderText("浮点型");
pValidatorLineEdit.setPlaceholderText("字母和数字");
# 整形 范围:[1, 99]
pIntValidator = QIntValidator(self)
pIntValidator.setRange(1, 99)
# 浮点型 范围:[-360, 360] 精度:小数点后2位
pDoubleValidator = QDoubleValidator(self)
pDoubleValidator.setRange(-360, 360)
pDoubleValidator.setNotation(QDoubleValidator.StandardNotation) # 正常显示浮点数
pDoubleValidator.setDecimals(2)
# 字符和数字
reg = QRegExp("[a-zA-Z0-9]+$")
pValidator = QRegExpValidator(self) # 根据正则表达式检查字符串
pValidator.setRegExp(reg)
# 设置验证器
pIntLineEdit.setValidator(pIntValidator)
pDoubleLineEdit.setValidator(pDoubleValidator)
pValidatorLineEdit.setValidator(pValidator)
self.setLayout(flo)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = lineEditDemo()
win.show()
sys.exit(app.exec_())
输入掩码
代码示例
from PyQt5.QtWidgets import QApplication, QLineEdit , QWidget , QFormLayout
import sys
class lineEditDemo(QWidget):
def __init__(self, parent=None):
super(lineEditDemo, self).__init__(parent)
self.setWindowTitle("QLineEdit的输入掩码例子")
flo = QFormLayout()
pIPLineEdit = QLineEdit()
pMACLineEdit = QLineEdit()
pDateLineEdit = QLineEdit()
pLicenseLineEdit = QLineEdit()
pIPLineEdit.setInputMask("000.000.000.000;_")
pMACLineEdit.setInputMask("HH:HH:HH:HH:HH:HH;_")
pDateLineEdit.setInputMask("0000-00-00")
pLicenseLineEdit.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#")
flo.addRow("数字掩码", pIPLineEdit)
flo.addRow("Mac掩码", pMACLineEdit)
flo.addRow("日期掩码", pDateLineEdit)
flo.addRow("许可证掩码", pLicenseLineEdit)
self.setLayout(flo)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = lineEditDemo()
win.show()
sys.exit(app.exec_())
综合代码例子
from PyQt5.QtWidgets import QApplication, QLineEdit , QWidget , QFormLayout
from PyQt5.QtGui import QIntValidator , QDoubleValidator , QFont
from PyQt5.QtCore import Qt
import sys
class lineEditDemo(QWidget):
def __init__(self, parent=None):
super(lineEditDemo, self).__init__(parent)
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( self.textchanged)
flo.addRow("Text changed", e4)
e5 = QLineEdit()
e5.setEchoMode(QLineEdit.Password)
flo.addRow("Password", e5)
e6 = QLineEdit("Hello PyQt5")
e6.setReadOnly(True)
flo.addRow("Read Only", e6)
e5.editingFinished.connect(self.enterPress)
self.setLayout(flo)
self.setWindowTitle("QLineEdit例子")
def textchanged(self, text):
print("输入的内容为: "+text)
def enterPress(self):
print("已输入值")
if __name__ == "__main__":
app = QApplication(sys.argv)
win = lineEditDemo()
win.show()
sys.exit(app.exec_())
第1个文本框e1,显示文本使用自定义字体、右对齐、允许输入整数。
第2个文本框e2,限制输入小数点后两位。
第3个文本框e3,需要一个输入掩码应用于电话号码。
第4个文本框e4,需要发射信号textChanged,连接到槽函数textchanged()。
第5个文本框e6,设置显示模式EchoMode为Password,需要发射editingfinished信号连接到槽函数enterPress(),一旦用户按下了回车键,该函数就会被执行。
第6个文本框e6,显示一个默认的文本,不能编辑,设置为只读的。
QTextEdit
多行文本框控件(文本/HTML文档)
setPlainText() | 设置多行文本框的文本内容。 |
toPlainText() | 返回多行文本框的文本内容。 |
setHtml() | 设置多行文本框的内容为HTML文档,HTML文档是描述网页的。 |
totHtml() | 返回多行文本框的HTML文档内容。 |
clear() | 清除多行文本框的内容 |
代码示例
from PyQt5.QtWidgets import QApplication, QWidget , QTextEdit, QVBoxLayout , QPushButton
import sys
class TextEditDemo(QWidget):
def __init__(self, parent=None):
super(TextEditDemo, self).__init__(parent)
self.setWindowTitle("QTextEdit 例子")
self.resize(300, 270)
self.textEdit = QTextEdit()
self.btnPress1 = QPushButton("显示文本")
self.btnPress2 = QPushButton("显示HTML")
layout = QVBoxLayout()
layout.addWidget(self.textEdit)
layout.addWidget(self.btnPress1)
layout.addWidget(self.btnPress2)
self.setLayout(layout)
self.btnPress1.clicked.connect(self.btnPress1_Clicked)
self.btnPress2.clicked.connect(self.btnPress2_Clicked)
def btnPress1_Clicked(self):
self.textEdit.setPlainText("Hello PyQt5!\n点击按钮")
def btnPress2_Clicked(self):
self.textEdit.setHtml("<font color='red' size='6'><red>Hello PyQt5!\n点击按钮。</font>")
if __name__ == "__main__":
app = QApplication(sys.argv)
win = TextEditDemo()
win.show()
sys.exit(app.exec_())