Pyqt5学习笔记二、PYQT5的控件(一)
二、PYQT5的控件
在PyQt5中,控件的基类位于QFrame类,而QFrame类继承自QWidget类,QWidget类是所有用户界面对象的基类。
1、文本类控件
文本类控件主要用来显示或者编辑文本信息,PyQt5中的文本类控件主要有Label、LineEdit、TextEdit、SpinBox、DoubleSpinBox、LCDNumber等
A、Label:标签控件
设置文本 setText()
设置对齐 setAlignment()
self.label.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
设置换行 setWordWrap()
self.label.setWordWrap(True)
设置图片需要使用QLabel类的setPixmap()方法,该方法中需要有一个QPixmap对象,表示图标对象。
from Pyqt5.QtGui import QPixmap #导入QPixmap类
self.label.setPixmap(QPixmap('1.jpg'))
获取标签文本要使用QLabel类的text()方法。
print(self.label.text())
B、LineEdit:单行文本框
LinEdit常用方法及说明
QLineEdit类的常用信号及说明
C、TextEdit:多行文本框
TextEdit是多行文本框控件,主要用来显示多行的文本内容,当文本内容超出控件的显示范围时,该控件将显示垂直滚动条;另外,TextEdit控件不仅可以显示纯文本内容,还支持显示HTML网页。
TextEdit控件对应PyQt5中的QTextEdit类,该类的常用方法及说明
D、SpinBox:整数数字选择
SpinBox是一个整数数字选择控件,该控件提供一对上下箭头,用户可以单击上下箭头选择数值,也可以直接输入。
QSpinBox类的常用方法及说明
默认情况下,SpinBox控件的取值范围为0~99,步长值为1。
# 将valueChanged信号与自定义槽函数相关联
self.spinBox.valueChanged.connect(self.getvalue)
E、DoubleSpinBox:小数数字选择
DoubleSpinBox与SpinBox控件类似,区别是,它用来选择小数数字,并且默认保留两位小数,方法和spinBox相同。
F、LCDNumber:液晶数字显示控件
# 文本框编辑结束时,发射editingFinished信号,与自定义槽函数关联
self.lineEdit.editingFinished.connect(self.setvalue)
这是一个简单的实例
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.InitUi()
def InitUi(self):
grid=QGridLayout()
self.label1=QLabel()
self.label1.setText("请输入数字:")
self.lineEdit1=QLineEdit()
self.lcd1=QLCDNumber()
self.lcd1.setGeometry(QtCore.QRect(20,40,161,41))
self.lcd1.setDigitCount(8)
self.lcd1.setMode(QLCDNumber.Dec)
self.lcd1.setSegmentStyle(QLCDNumber.Flat)
self.lcd1.setObjectName("lcdnumber")
grid.addWidget(self.label1,0,0)
grid.addWidget(self.lineEdit1,0,1)
grid.addWidget(self.lcd1,1,0,1,1,QtCore.Qt.AlignCenter)
self.setLayout(grid)
self.lineEdit1.editingFinished.connect(self.setvalues)
def setvalues(self):
self.lcd1.setProperty("value",self.lineEdit1.text())
if __name__=='__main__':
import sys
app=QApplication(sys.argv)
win=Demo()
win.show()
sys.exit(app.exec_())
2、按钮类控件
G、PushButton:按钮
H、ToolButton:工具按钮
ToolButton控件是一个工具按钮,它本质上是一个按钮,只是在按钮中提供了默认文本“…”和可选的箭头类型,它对应PyQt5中的QToolButton类
ToolButton控件的使用方法与PushButton类似,不同的是,ToolButton控件可以设置工具按钮的显示样式和箭头类型,其中,工具按钮的显示样式通过QToolButton类的setToolButtonStyle()方法进行设置,主要支持以下5种样式。
Qt.ToolButtonIconOnly:只显示图标。
Qt.ToolButtonTextOnly:只显示文本。
Qt.ToolButtonTextBesideIcon:文本显示在图标的旁边。
Qt.ToolButtonTextUnderIcon:文本显示在图标的下面。
Qt.ToolButtonFollowStyle:跟随系统样式。
工具按钮的箭头类型通过QToolButton类的setArrowType()方法进行设置,主要支持以下5种箭头类型。
Qt.NoArrow:没有箭头。
Qt.UpArrow:向上的箭头。
Qt.DownArrow:向下的箭头。
Qt.LeftArrow:向左的箭头。
Qt.RightArrow:向右的箭头。
ToolButton控件中的箭头图标默认大小为16×16,如果想改变箭头图标的大小,可以使用setIconSize()方法。
self.toolButton.setIconSize(QtCore.QSize(32,32)) # 设置图标大小
I、CommandLinkButton:命令链接按钮
CommandLinkButton控件是一个命令链接按钮,它对应PyQt5中的QCommandLinkButton类,该类与PushButton按钮的用法类似,区别是,该按钮自定义一个向右的箭头图标。
J、RadioButton:单选按钮
k、CheckBox:复选框
它除了选中和未选中两种状态之外,还提供了第三种状态:半选中。如果需要第三种状态,需要使用QCheckBox类的setTristate()方法使其生效,并且可以使用checkState()方法查询当前状态。
CheckBox控件的三种状态值及说明
3、选择列表类控件
L、ComboBox:下拉组合框
ComboBox控件常用的信号有两个:activated和currentIndexChanged,其中,activated信号在用户选中一个下拉选项时发射,而currentIndexChanged信号则在下拉选项的索引发生改变时发射。
M、FontComboBox:字体组合框
FontComboBox控件又称为字体组合框控件,它主要用于在下拉组合框中显示并选择字体,它对应PyQt5中的QFontComboBox类。
FontComboBox控件的使用与ComboBox类似,但由于它的主要作用是选择字体,所以QFontComboBox类中提供了一个
setFontFilters()
方法,用来设置可以选择的字体,该方法的参数值及说明如下。QFontComboBox.AllFonts:所有字体。
QFontComboBox.ScalableFonts:可以自动伸缩的字体。
QFontComboBox.NonScalableFonts:不自动伸缩的字体。
QFontComboBox.MonospacedFonts:等宽字体。
QFontComboBox.ProportionalFonts:比例字体。
# 设置字体组合框中显示所有字体
self.fontComboBox.setFontFilters(QtWidgets.QFontComboBox.AllFonts)
# 当选择的字体改变时,发射currentIndexChanged信号,调用setfont槽函数
self.fontComboBox.currentIndexChanged.connect(self.setfont)
N、ListWidget:列表
PyQt5提供了两种列表,分别是ListWidget
和ListView
,其中,ListView是基于模型的,它是ListWidget的父类,使用ListView时,首先需要建立模型,然后再保存数据;而ListWidget是ListView的升级版本,它已经内置了一个数据存储模型QListWidgetItem
,我们在使用时,不必自己建立模型,而直接使用addItem()
或者addItems()
方法即可添加列表项。所以在实际开发时,推荐使用ListWidget控件作为列表.
ListWidget控件常用的信号有两个:currentItemChanged
和itemClicked
,其中,currentItemChanged信号在列表中的选择项发生改变时发射,而itemClicked信号在单击列表中的项时发射。
4、容器控件
容器控件可以将窗口中的控件进行分组处理,使窗口的分类更清晰,常用的容器控件有GroupBox分组框、TabWidget选项卡和ToolBox工具盒。
O、GroupBox:分组框
GroupBox控件对应PyQt5中的QGroupBox类,该类的常用方法及说明
QGroupBox类最常用的是setTitle()方法,用来设置分组框的标题。
self.groupBox.setTitle("系统登录")
P、TabWidget:选项卡
TabWidget控件又称选项卡控件,它主要为其他控件提供分组,并且按照控件的分组来细分窗口的功能。
通过将setTabsClosable()方法设置为True可以单独关闭选项卡.
TabWidget在显示选项卡时,如果默认大小显示不下,会自动生成向前和向后的箭头,用户可以通过单击箭头,查看未显示的选项卡.
Q、ToolBox:工具盒
ToolBox控件又称为工具盒控件,它主要提供一种列状的层叠选项卡.
5、日期时间类控件
日期时间类控件主要是对日期、时间等信息进行编辑、选择或者显示,PyQt5中提供了Date/TimeEdit、DateEdit、TimeEdit和CalendarWidget 4个相关的控件。
R、日期和(或)时间控件
PyQt5提供了3个日期时间控件,分别是Date/TimeEdit控件、DateEdit控件和TimeEdit控件,其中,Date/TimeEdit控件对应的类是QDateTimeEdit,该控件可以同时显示和编辑日期时间。
由于QDateEdit和QTimeEdit都是从QDateTimeEdit继承而来的,因此,他们都拥有QDateTimeEdit类的所有公共方法。
(1)由于date()、time()和dateTime()方法的返回值分别是QDate类型、QTime类型和QDateTime类型,无法直接使用,因此如果想要获取日期时间控件中的具体日期和(或)时间值,可以使用text()方法获取。例如: self.dateTimeEdit.text()
(2)使用日期时间控件时,如果要改变日期时间,默认只能通过上下箭头来改变,如果想弹出日历控件,设置setCalendarPoput(True)即可。
S、CalendarWidget:日历控件
在PyQt5中,如果要获取当前系统的日期时间,可以借助QtCore模块下的QDateTime类、QDate类或者QTime类实现。其中,获取当前系统的日期时间可以使用QDateTime类的currentDateTime()方法,获取当前系统的日期可以使用QDate类的currentDate()方法,获取当前系统的时间可以使用QTime类的currentTime()方法,代码如下:
datatime=QtCore.QDateTime.currentDateTime() #获取系统当前时间
data=QtCore.QDate.currentDate() #获取当前日期
time=QtCore.QTime.currentTime() #获取当前时间
评论列表
发表评论