Pyqt5学习笔记二、PYQT5的控件(一)

磊落不羁 by:磊落不羁 分类:pyQt5 时间:1年前 阅读:1486 评论:0

二、PYQT5的控件

在PyQt5中,控件的基类位于QFrame类,而QFrame类继承自QWidget类,QWidget类是所有用户界面对象的基类。

image-20221222165746148

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常用方法及说明

image-20221222171432735

QLineEdit类的常用信号及说明

image-20221222171517499

C、TextEdit:多行文本框

TextEdit是多行文本框控件,主要用来显示多行的文本内容,当文本内容超出控件的显示范围时,该控件将显示垂直滚动条;另外,TextEdit控件不仅可以显示纯文本内容,还支持显示HTML网页。

TextEdit控件对应PyQt5中的QTextEdit类,该类的常用方法及说明

image-20221222171645182

D、SpinBox:整数数字选择

SpinBox是一个整数数字选择控件,该控件提供一对上下箭头,用户可以单击上下箭头选择数值,也可以直接输入。

QSpinBox类的常用方法及说明

image-20221222171746611

默认情况下,SpinBox控件的取值范围为0~99,步长值为1。

# 将valueChanged信号与自定义槽函数相关联
self.spinBox.valueChanged.connect(self.getvalue)

image-20221222171925243

E、DoubleSpinBox:小数数字选择

DoubleSpinBox与SpinBox控件类似,区别是,它用来选择小数数字,并且默认保留两位小数,方法和spinBox相同。

F、LCDNumber:液晶数字显示控件

image-20221222172200566

image-20221222172220135

image-20221222172228028

# 文本框编辑结束时,发射editingFinished信号,与自定义槽函数关联
self.lineEdit.editingFinished.connect(self.setvalue)

image-20221222173748681

这是一个简单的实例

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:按钮

image-20221222173912968

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按钮的用法类似,区别是,该按钮自定义一个向右的箭头图标。

image-20221222174234473

image-20221222174315024

J、RadioButton:单选按钮

image-20221222174406186

k、CheckBox:复选框

它除了选中和未选中两种状态之外,还提供了第三种状态:半选中。如果需要第三种状态,需要使用QCheckBox类的setTristate()方法使其生效,并且可以使用checkState()方法查询当前状态。

CheckBox控件的三种状态值及说明

image-20221222174640505

3、选择列表类控件

L、ComboBox:下拉组合框

image-20221222174746297

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提供了两种列表,分别是ListWidgetListView,其中,ListView是基于模型的,它是ListWidget的父类,使用ListView时,首先需要建立模型,然后再保存数据;而ListWidget是ListView的升级版本,它已经内置了一个数据存储模型QListWidgetItem,我们在使用时,不必自己建立模型,而直接使用addItem()或者addItems()方法即可添加列表项。所以在实际开发时,推荐使用ListWidget控件作为列表.

image-20221222175209546

ListWidget控件常用的信号有两个:currentItemChangeditemClicked,其中,currentItemChanged信号在列表中的选择项发生改变时发射,而itemClicked信号在单击列表中的项时发射。

4、容器控件

容器控件可以将窗口中的控件进行分组处理,使窗口的分类更清晰,常用的容器控件有GroupBox分组框、TabWidget选项卡和ToolBox工具盒。

O、GroupBox:分组框

GroupBox控件对应PyQt5中的QGroupBox类,该类的常用方法及说明

image-20221222175403440

QGroupBox类最常用的是setTitle()方法,用来设置分组框的标题。

self.groupBox.setTitle("系统登录")

P、TabWidget:选项卡

TabWidget控件又称选项卡控件,它主要为其他控件提供分组,并且按照控件的分组来细分窗口的功能。

image-20221222175535118

image-20221222175545594

通过将setTabsClosable()方法设置为True可以单独关闭选项卡.

image-20221222175612232

TabWidget在显示选项卡时,如果默认大小显示不下,会自动生成向前和向后的箭头,用户可以通过单击箭头,查看未显示的选项卡.

Q、ToolBox:工具盒

ToolBox控件又称为工具盒控件,它主要提供一种列状的层叠选项卡.

image-20221222175714806

5、日期时间类控件

日期时间类控件主要是对日期、时间等信息进行编辑、选择或者显示,PyQt5中提供了Date/TimeEdit、DateEdit、TimeEdit和CalendarWidget 4个相关的控件。

R、日期和(或)时间控件

PyQt5提供了3个日期时间控件,分别是Date/TimeEdit控件、DateEdit控件和TimeEdit控件,其中,Date/TimeEdit控件对应的类是QDateTimeEdit,该控件可以同时显示和编辑日期时间。

image-20221222175923190

由于QDateEdit和QTimeEdit都是从QDateTimeEdit继承而来的,因此,他们都拥有QDateTimeEdit类的所有公共方法。

image-20221222175957413

(1)由于date()、time()和dateTime()方法的返回值分别是QDate类型、QTime类型和QDateTime类型,无法直接使用,因此如果想要获取日期时间控件中的具体日期和(或)时间值,可以使用text()方法获取。例如: self.dateTimeEdit.text()
(2)使用日期时间控件时,如果要改变日期时间,默认只能通过上下箭头来改变,如果想弹出日历控件,设置setCalendarPoput(True)即可。

S、CalendarWidget:日历控件

image-20221222180116333

在PyQt5中,如果要获取当前系统的日期时间,可以借助QtCore模块下的QDateTime类、QDate类或者QTime类实现。其中,获取当前系统的日期时间可以使用QDateTime类的currentDateTime()方法,获取当前系统的日期可以使用QDate类的currentDate()方法,获取当前系统的时间可以使用QTime类的currentTime()方法,代码如下:

datatime=QtCore.QDateTime.currentDateTime()  #获取系统当前时间
data=QtCore.QDate.currentDate()              #获取当前日期
time=QtCore.QTime.currentTime()              #获取当前时间
非特殊说明,本文版权归原作者所有,转载请注明出处

本文地址:http://php.liulei.com.cn/?type=acticle&id=67

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址

TOP