PyQt5常用控件使用方法(文本类控件)

PyQt5中常用控件主要包含五种,分别是文本类控件、按钮类控件、选择列表类控件、容器控件、日期时间类控件。这五类控件在开发UI程序时占着举足轻重的地位,掌握的熟练程度决定着我们开发时的效率。本文旨在帮助初学者能够更好的掌握各个控件的使用方法,同时页希望成为一个加强记忆的工具。

本文中使用Qt Designer结合PyCharm示例。

文本类控件

主要包含Label(标签)、LineEdit(单行文本框)、TextEdit(多行文本框)、SpinBox(整数数字选择件)、DoubleBox(小数数字选择器)、LCDNumber(液晶数字选择器)。接下来我们一一讲解每一个控件的使用方法。

1.Label

主要作用是显示用不能编辑的文本、标识窗体上的对象等(例如给文本框添加描述信息),它对应于PyQt5中的QLabel类。

label常用方法如下所示

setAlignment()

设置文本的对其方式
setWordWrap()设置文本是否换行True/False
setText()为label设置文本内容
self.label.setAlignment(QtCore.Qt.AlignCenter)  
self.label.setWordWrap(True)
self.label.setText("床前明月光,疑是地上霜")

运行结果如下所示:

左侧图像为使用setWordWrap属性,实现了换行功能,如果不适用该功能的话结果如右侧图像所示。

2.LineEdit

单行文本框,该控件只能输入单行字符串(可以在开发登录界面时使用它),对应于QLineEdit类。

常用方法如下所示:

setText()设置文本框内容
text()获得文本框内容
setEchoMode()设置文本框显示字符的模式self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
QLineEdit.Normal:正常显示输入的字符(默认设置)
QLineEdit.NoEcho:不显示任何输入的字符,设用于即使符合密码长度也需要保密的密码
QLineEdit.Password:输入密码时显示掩码
QLineEdit.PasswordEchoOnEdit:在编辑时显示字符,失去焦点后显示密码掩码
setValidator()设置文本框验证器self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))
QIntValidator:限制输入整数
QDoubleValidator:限制输入小数/QRegExpValidator:检查输入是否符合设置的正则表达式
常用信号
textChanged当更改文本框中的内容时发射该信号
editingFinished当文本框中的内容编辑结束时发射该信号,《enter》键为结束标志

举例如下:通过label与lineEdit设计如下界面,使得用户名只能输入数字,输入密码时只显示掩码。

self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(250, 190, 120, 30))
self.lineEdit.setObjectName("lineEdit")

self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(250, 240, 120, 30))
self.lineEdit_2.setObjectName("lineEdit_2")
self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))

在lineEdit_2中对输入结果做了要求:设置文本框为密码且变成掩码,同时设置只能输入8位数字。

lineEdit有两个槽函数,使用方法相同,现举例如下:

如果不清楚信号-槽这个代码在哪写,请在评论区提问(默认都会)

# 这个函数的作用是:当在lineEdit输入CSDNer后按下enter,文本便会出现在下方的label_3中
def get_text(self):
    self.label_3.setText(self.lineEdit.text())

     <->      

两个信号的区别:textChanged:lineEdit的内容发生改变时,对应的label_3的内容也随之改变;

editingFinshed则要等到按下enter后才会改变。

3.TextEdit

多行文本框,对应于QTextEdit类。当文本超出控件的显示范围时,该控件自动显示滚动条。

setPlainText()设置文本内容
setTextColor()设置文本颜色self.textEdit.setTextColor(QtCore.Qt.red)
setWordWrapMode()设置自动换行
clear()清空所有内容(可以编写槽函数)
self.textEdit.setText("你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!"
                                   "你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!")

 

4.SpinBox/DoubleBox

二者分别对应QSpinBox类与QDoubleBox类。既可以单击箭头选择数字也可以自己输入数字。

spinBox常见方法:

1.setValue()设置空间的当前值
2.setMaximum()/setMinimum()设置最大/最小值
3.setRange()设置范围,通用性较强
4.setSingleStep()设置步长
5.value()获取控件的值

常见信号:可以通过valueChange获取控件当前值

doubleBox常见方法同上

示例如下:

我们先按照下图搭建UI。左位spinBox控件,又位doubleBox控件;下面两个label用于构建槽函数的展示。

self.spinBox = QtWidgets.QSpinBox(self.centralwidget)
self.spinBox.setGeometry(QtCore.QRect(100, 200, 151, 81))
self.spinBox.setObjectName("spinBox")
self.spinBox.setRange(0, 100)  # 设置范围
self.spinBox.setSingleStep(5)  # 设置步长(同下)

self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
self.doubleSpinBox.setGeometry(QtCore.QRect(310, 200, 151, 81))
self.doubleSpinBox.setObjectName("doubleSpinBox")
self.doubleSpinBox.setRange(0, 100)
self.doubleSpinBox.setSingleStep(0.5)
# 连接信号与槽
self.spinBox.valueChanged.connect(self.get_spin_num)
self.doubleSpinBox.valueChanged.connect(self.get_double_num)
# 槽函数
def get_spin_num(self):
    self.label.setText(str(self.spinBox.value()))

def get_double_num(self):
    self.label_2.setText(str(self.doubleSpinBox.value()))

与初始图片相比较。两个控件包括两个label的内容都发生了变化。

5.LCDNumber

该控件主要用来显示液晶数字,对应与QLCDNumber类

常用方法如下所示:

setDigitCount()设置可以显示的数字数量
setMode(QtWidgets.QLCDNumber.Dec)设置显示数字的模式,举例为十进制
setSegmentStyle(QtWidgets.QLCDNumber.Flat)设置显示样式
value()获取值
setProperty()设置相应属性的值

同样,先搭建如下图所示:当在lineEdit输入数字时,lcdNumber随之显示。

self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)
self.lcdNumber.setGeometry(QtCore.QRect(100, 300, 300, 200))
self.lcdNumber.setObjectName("lcdNumber")
def set_value(self):
    self.lcdNumber.setProperty("value", self.lineEdit.text())

结果如下所示:

文本类控件现已完结,欢迎大佬批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值