PyQt5常用控件

PyQt5常用控件

一、控件概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、文本类控件

1.Label:标签控件

标签文本:

self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(30,30,81,41))
self.label.setText("用户名:")

对齐方式:

AlignLeft:左对齐
AlignHCenter:水平居中对齐
AlignRight:右对齐
AlignJustify:两端对齐
AlignTop:顶部对齐
AlignVCenter:垂直居中对齐
AlignBottom:底部对齐

文本换行

self.label.setWordWrap(True)

超链接:

self.label.setText("<a href='https://www.baidu.com'>百度</a>")
self.label.setOpenExternalLinks(True) #设置允许访问超链接

为标签设置图片

from PyQt5.QtGui import QPixmap  #导入QPixmap类
self.label.setPixmp(QPixmap('test.png'))  #为Label设置图片

获取标签文本

print(self.label.text())

2.LineEdit:单行文本框

setText():设置文本框内容
text():获取文本框内容
在这里插入图片描述

实例:登录窗口
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(517, 378)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(50, 60, 61, 31))
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(110, 60, 211, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(50, 100, 71, 31))
        self.label_2.setObjectName("label_2")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(110, 100, 211, 31))
        self.lineEdit_2.setObjectName("lineEdit_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 517, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.lineEdit_2.textChanged.connect(self.aadd)  #文本改变,输出5
        self.lineEdit_2.editingFinished.connect(self.aadd)  #enter键后发生改变

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "用户名:"))
        self.label_2.setText(_translate("MainWindow", "密码:"))
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit)  # 设置文本框为密码 #Password
        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))  # 只能输入8位

    def aadd(self):
        print(5)

在这里插入图片描述

3.TextEdit:多行文本框

在这里插入图片描述

实例:设置多行文本和HTML文本的对比显示
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(754, 577)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(40, 120, 161, 121))
        self.textEdit.setObjectName("textEdit")
        self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_2.setGeometry(QtCore.QRect(340, 120, 161, 121))
        self.textEdit_2.setObjectName("textEdit_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 754, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        # 设置纯文本显示
        self.textEdit.setPlainText("纯文本:普通话(PuTongHua)是联合国六种工作语言之一"
                                   "通话的“普通”两字,是“普遍”和“共通”的意思。")
        # 设置HTML文本显示
        self.textEdit_2.setHtml("HTML:普通话(PuTongHua)是联合国六种工作语言之一"
                                "通话的“普通”两字,<font color='red' size=12>是“普遍”和“共通”的意思。</font>推广全国通用的普通话,是提高全国人民科学文化水平的一项基本语言国策")

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

4.SpinBox:整数数字选择控件

setValue():设置控件当前值
setMaximum():设置最大值
setMinimum():设置最小值
setRange():设置取值范围
setSingleStep():单击上下箭头时的步长值
value():获取控件中的值

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(636, 417)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.spinBox = QtWidgets.QSpinBox(self.centralwidget)
        self.spinBox.setGeometry(QtCore.QRect(70, 90, 141, 81))
        self.spinBox.setObjectName("spinBox")

        #self.spinBox.setRange(0.100) #设置最大最小值
        self.spinBox.setMinimum(0) #设置最小值
        self.spinBox.setMaximum(100)  # 设置最大值
        self.spinBox.setSingleStep(2)  # 设置步长值

        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(90, 220, 221, 31))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(260, 230, 72, 15))
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 636, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.spinBox.valueChanged.connect(self.getvalue)

    def getvalue(self):
        self.label_2.setText(str(self.spinBox.value()))


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "当前控件显示的数值为:"))
        self.label_2.setText(_translate("MainWindow", "TextLabel"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

5.DoubleSpinBox:小数数字选择控件

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(548, 392)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.doubleSpinBox.setGeometry(QtCore.QRect(90, 90, 91, 41))
        self.doubleSpinBox.setObjectName("doubleSpinBox")

        self.doubleSpinBox.setMinimum(0)  # 设置最小值
        self.doubleSpinBox.setMaximum(99.999)  # 设置最大值
        self.doubleSpinBox.setSingleStep(0.001)  # 设置步长值
        self.doubleSpinBox.setDecimals(3)  # 设置保留三位小数

        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(80, 180, 181, 21))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(250, 180, 91, 21))
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 548, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.doubleSpinBox.valueChanged.connect(self.getvalue)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "当前控件所显示的数值:"))
        self.label_2.setText(_translate("MainWindow", "0"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

6.LCDNumber:液晶数字显示控件

在这里插入图片描述

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(523, 433)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)
        self.lcdNumber.setGeometry(QtCore.QRect(200, 170, 121, 81))
        self.lcdNumber.setDigitCount(7)  # 设置最大显示7位数字
        self.lcdNumber.setMode(QtWidgets.QLCDNumber.Dec)  # 设置默认以十进制显示数字
        self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat)  # 设置数字显示屏的显示样式
        self.lcdNumber.setObjectName("lcdNumber")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(130, 80, 101, 61))
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(220, 100, 113, 21))
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 523, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.lineEdit.editingFinished.connect(self.setvalue)

    def setvalue(self):
        self.lcdNumber.setProperty("value", self.lineEdit.text())

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "请输入数字:"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

小于7位数字
大于7位数字

三、按钮类控件

1.PushButtom:按钮

setText():设置按钮所显示的文本 text():获取按钮所显示的文本
setIcon():设置按钮上的图标,可以将参数设置为QtGui.QIcon(‘图标路径’)
setIconSize():设置按钮上的图标大小,参数可以设置为QtCore.QSize(int width,int height)
setEnabled():设置按钮是否可用,参数设置为False时,按钮为不可用状态
setShortcut():设置按钮的快捷键,参数可以设置为键盘中的按键或组合键例如<Alt+0>


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QPixmap,QIcon


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(300,300)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(40,83,61,23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.setIcon(QIcon(QPixmap("login.ico")))  #为登录设置图标
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(26,22,54,12))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(26,52,54,12))
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(79,18,113,20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(78,50,113,20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_2.EchoMode(QtWidgets.QLineEdit.Password)  #设置文本框为密码
        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000,99999999)) #8位
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(120,83,61,23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_2.setIcon(QIcon(QPixmap("exit.ico"))) #为“退出”按钮设置图标
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(self.login) #为登录按钮clicked信号绑定自定义槽函数
        self.pushButton_2.clicked.connect(MainWindow.close)#为退出按钮clicked信号绑定MainWindow自带的close()槽函数
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def login(self):
        from PyQt5.QtWidgets import QMessageBox
        #使用information()方法弹出信息提示框
        QMessageBox.information(MainWindow,"登录信息","用户名:"+self.lineEdit.text()+"密码:"+self.lineEdit_2.text(),QMessageBox.Ok)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "系统登录"))
        self.pushButton.setText(_translate("MainWindow", "登录"))
        self.pushButton_2.setText(_translate("MainWindow", "退出"))
        self.label.setText(_translate("MainWindow", "用户名:"))
        self.label_2.setText(_translate("MainWindow", "密码:"))
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit)  # 设置文本框为密码 #Password
        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))  # 只能输入8位


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

2.ToolButtom:工具按钮

显示样式:
Qt.ToolButtomIconQnly:只显示图标
Qt.ToolButtomTextQnly:只显示文本
Qt.ToolButtomTextBesideIcon:文本显示在图标的旁边
Qt.ToolButtomTextUnderIcon:文本显示在图标的下面
Qt.ToolButtomFollowStyle:跟随系统样式
箭头类型:
Qt.NoArrow:没有箭头
Qt.UpArrow:向上的箭头
Qt.DownArrow:向下的箭头
Qt.LeftArrow:向左的箭头
Qt.RightArrow:向右的箭头

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(240, 320)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.toolButton = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton.setGeometry(QtCore.QRect(40, 60, 47, 21))
        self.toolButton.setObjectName("toolButton")
        self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)  # 设置显示样式
        self.toolButton.setArrowType(QtCore.Qt.UpArrow)  # 设置箭头类型
        #self.toolButton.setIconSize(QtCore.QSize(29,29)) #设置图标大小
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 240, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.toolButton.setText(_translate("MainWindow", "..."))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

3.CommandLinkButtom:命令链接按钮

创建MainWindow窗口,添加CommandLinkButtom控件,设置文本
在这里插入图片描述

4.RadioBotton:单选按钮

setText():设置单选按钮显示的文本
text():获取单选按钮显示的文本
setChecked() 或者 setCheckable():设置单选按钮是否为选中状态,True为选中状态;False为未选中状态
isChecked():返回单选按钮的状态,True为选中状态;False为未选中状态

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(556, 473)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.radioButton = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton.setGeometry(QtCore.QRect(100, 260, 115, 19))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_2.setGeometry(QtCore.QRect(260, 260, 115, 19))
        self.radioButton.setChecked(True)  #设置管理员单选按钮默认选中
        self.radioButton_2.setObjectName("radioButton_2")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(230, 90, 151, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(230, 140, 151, 31))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(110, 320, 93, 28))
        self.lineEdit_2.EchoMode(QtWidgets.QLineEdit.Password)  # 设置文本框为密码
        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))  # 8位
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(250, 320, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(110, 90, 91, 31))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(110, 140, 91, 31))
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 556, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(self.login) #登录
        self.pushButton_2.clicked.connect(MainWindow.close)#退出
        self.radioButton.toggled.connect(self.select)#单选按钮信号绑定toggled自定义槽函数  #可变clicked
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def login(self):
        from PyQt5.QtWidgets import QMessageBox
        #使用information()方法弹出信息提示框
        QMessageBox.information(MainWindow,"登录信息","用户名:"+self.lineEdit.text()+"密码:"+self.lineEdit_2.text(),QMessageBox.Ok)

    def select(self):
        if self.radioButton.isChecked():  #判断是否为管理员登录
            QMessageBox.information(MainWindow,"提示","您选择的是 管理员 登录",QMessageBox.Ok)
        elif self.radioButton_2.isChecked():  #判断是否为管理员登录
            QMessageBox.information(MainWindow,"提示","您选择的是 普通用户 登录",QMessageBox.Ok)


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "系统登陆"))
        self.radioButton.setText(_translate("MainWindow", "管理员"))
        self.radioButton_2.setText(_translate("MainWindow", "普通用户"))
        self.pushButton.setText(_translate("MainWindow", "重置"))
        self.pushButton_2.setText(_translate("MainWindow", "登录"))
        self.label.setText(_translate("MainWindow", "用户名:"))
        self.label_2.setText(_translate("MainWindow", "密码:"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

在这里插入图片描述

5.CheckBox:复选框

QT.Checked():选中
QT.PartiallyChecked():半选中
QT.UnChecked():未选中
CheckBox控件最常用的信号是stasteChanged,用来在复选框的状态发生改变时发射

设置用户权限

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(479, 415)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox.setGeometry(QtCore.QRect(50, 30, 151, 19))
        self.checkBox.setObjectName("checkBox")
        self.checkBox_2 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(50, 70, 191, 19))
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(50, 110, 191, 19))
        self.checkBox_3.setObjectName("checkBox_3")
        self.checkBox_4 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_4.setGeometry(QtCore.QRect(50, 150, 191, 19))
        self.checkBox_4.setObjectName("checkBox_4")
        self.checkBox_5 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_5.setGeometry(QtCore.QRect(50, 190, 191, 19))
        self.checkBox_5.setObjectName("checkBox_5")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(270, 270, 93, 28))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 479, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.pushButton.clicked.connect(self.getvalue)

    def getvalue(self):
        oper = ""
        if self.checkBox.isChecked():
            oper+=self.checkBox.text()
        if  self.checkBox_2.isChecked():
            oper+='\n'+self.checkBox_2.text()
        if  self.checkBox_3.isChecked():
            oper+='\n'+self.checkBox_3.text()
        if  self.checkBox_4.isChecked():
            oper+='\n'+self.checkBox_4.text()
        if  self.checkBox_5.isChecked():
            oper+='\n'+self.checkBox_5.text()
        from PyQt5.QtWidgets import QMessageBox
        QMessageBox.information(MainWindow,"提示","您选择的权限如下:\n"+oper,QMessageBox.Ok)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.checkBox.setText(_translate("MainWindow", "基本信息管理"))
        self.checkBox_2.setText(_translate("MainWindow", "销售管理"))
        self.checkBox_3.setText(_translate("MainWindow", "系统管理"))
        self.checkBox_4.setText(_translate("MainWindow", "进货管理"))
        self.checkBox_5.setText(_translate("MainWindow", "库存管理"))
        self.pushButton.setText(_translate("MainWindow", "设置"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

四、选择列表类控件

1.ComboBox:下拉组合框

addItem():添加一个下拉列表项
addItems():从列表中添加下拉选项
currentText():获取选中项的文本
currentIndex():获取选中项的索引
itemText(index):获取索引为index项的文本
setItemText(index,text):设置索引为index项的文本
count():获取所有选项的数量
clear():删除所有选项

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(552, 428)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(120, 110, 72, 15))
        self.label.setObjectName("label")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(180, 100, 131, 31))
        self.comboBox.setObjectName("comboBox")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(130, 180, 211, 41))
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 552, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        list = ["总经理","副总经理","人事部经理","财务部经理","部门经理","普通员工"]
        self.comboBox.addItems(list) #将职位列表添加到ComboBox下拉列表中
        self.comboBox.currentIndexChanged.connect(self.showinfo) #将ComboBox控件的选项更改信号与自定义槽函数关联

    def showinfo(self):
        self.label_2.setText("您选择的职位是:"+self.comboBox.currentText()) #显示选择的职位

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "职位:"))
        self.label_2.setText(_translate("MainWindow", "您选择的职位是:"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

2.FontComboBox:字体组合框

QFontComboBox.AllFonts:所有字体
QFontComboBox.ScalabelFonts:可以自动伸缩的字体
QFontComboBox.NonScalableFonts:不自动伸缩的字体
QFontComboBox.MonospaceFonts:等宽字体
QFontComboBox.ProportionalFonts:比例字体

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(472, 397)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.fontComboBox = QtWidgets.QFontComboBox(self.centralwidget)
        self.fontComboBox.setGeometry(QtCore.QRect(80, 60, 279, 22))
        self.fontComboBox.setObjectName("fontComboBox")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(90, 160, 281, 31))
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 472, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.fontComboBox.setFontFilters(QtWidgets.QFontComboBox.AllFonts) #设置字体组合框中显示的所有字体
        self.fontComboBox.currentIndexChanged.connect(self.setfont) #当选择字体改变时,发射currentIndexChanged信号,调用setfont()槽函数

    def setfont(self):
        print(self.fontComboBox.currentText())  #控制台中输出选择的字体
        #为label设置字体
        self.label.setFont(QtGui.QFont(self.fontComboBox.currentText()))

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "每天编程1小时,从菜鸟到大牛"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

3.ListWidget:列表

ListWidget控件最常用的信号
currentItemChanged:列表项中的选择项发生改变时发射
itemClicked:单击列表中的项时发射

在这里插入图片描述
用列表表示内地电影票房的总排行榜

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(588, 492)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.listWidget = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget.setGeometry(QtCore.QRect(20, 10, 541, 401))
        self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) #设置列表可以多选
        self.listWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) #设置选中方式为整行选中
        #设置以列表形式显示数据
        self.listWidget.setViewMode(QtWidgets.QListView.ListMode)
        self.listWidget.setWordWrap(True) #自动换行
        self.listWidget.setObjectName("listWidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 588, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        from collections import OrderedDict
        # 定义有序字典,作为List列表的数据源
        dict = OrderedDict({'第1名': '战狼2,56.83', '第2名': '哪吒之魔童降世,50.12', '第3名': '流浪地球,46.86', })

        for key, value in dict.items():
            self.item = QtWidgets.QListWidgetItem(self.listWidget)  # 遍历字典,并分别获取到键值
            self.item.setText(key + ':' + value)  # 创建列表项
            self.item.setToolTip(value)  # 设置项文本
        self.listWidget.itemClicked.connect(self.gettext)  # 设置提示文字

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

    def gettext(self,item):
        if item.isSelected():
            from PyQt5.QtWidgets import QMessageBox
            QMessageBox.information(MainWindow,"提示","您选择的是:"+item.text(),QMessageBox.Ok)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述
在这里插入图片描述

五、容器控件

1.GropBox:分组框

在这里插入图片描述
QGroupBox类最常用的是setTitle()方法,用来设置分组框标题

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

在这里插入图片描述

2.TabWidget:选项卡

在这里插入图片描述
在这里插入图片描述
选项卡的动态添加和删除

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(487, 422)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 471, 281))
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.tabWidget.addTab(self.tab_2, "")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, 300, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(170, 300, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 487, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.pushButton.clicked.connect(self.addtab)
        self.pushButton_2.clicked.connect(self.deltab)
        self.tabWidget.currentChanged.connect(self.gettab)  # 页面切换

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)



    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2"))
        self.pushButton.setText(_translate("MainWindow", "添加"))
        self.pushButton_2.setText(_translate("MainWindow", "删除"))


    # 新增选项卡
    def addtab(self):
        self.atab = QtWidgets.QWidget()  # 创建选项卡对象
        name = "tab_" + str(self.tabWidget.count() + 1)  # 设置选项卡对象名
        self.atab.setObjectName(name)  # 设置选项卡对象名
        self.tabWidget.addTab(self.atab, name)  # 添加选项卡

    # 删除选项卡
    def deltab(self):
        self.tabWidget.removeTab(self.tabWidget.currentIndex())  # 移除当前选项卡

    # 获取选中的选项卡及索引
    def gettab(self, currentIndex):
        from PyQt5.QtWidgets import QMessageBox
        QMessageBox.information(MainWindow, "提示","您选择了" + self.tabWidget.tabText(currentIndex) + "选项卡,索引为:" + str(self.tabWidget.currentIndex()),QMessageBox.Ok)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

添加
选择选项卡
删除

3.ToolBox:工具盒

在这里插入图片描述
实现仿qq抽屉的效果

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(142,393)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        #toolBox工具盒
        self.toolBox = QtWidgets.QToolBox(self.centralwidget)
        self.toolBox.setGeometry(QtCore.QRect(0,0,141,391))
        self.toolBox.setObjectName("toolBox")
        #好友设置
        self.page = QtWidgets.QWidget()
        self.page.setGeometry(QtCore.QRect(0, 0, 141, 287))
        self.page.setObjectName("page")
        self.toolButton = QtWidgets.QToolButton(self.page)
        self.toolButton.setGeometry(QtCore.QRect(0, 0, 91, 51))
        icon=QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(".\img\qq.png"),QtGui.QIcon.Normal,QtGui.QIcon.Off)
        self.toolButton.setIcon(icon)
        self.toolButton.setIconSize(QtCore.QSize(20,20))
        self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolButton.setAutoRaise(True)
        self.toolButton.setObjectName("toolButton")
        self.toolButton_2 = QtWidgets.QToolButton(self.page)
        self.toolButton_2.setGeometry(QtCore.QRect(0, 49, 91, 51))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(".\img\qq.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButton_2.setIcon(icon1)
        self.toolButton_2.setIconSize(QtCore.QSize(20,20))
        self.toolButton_2.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolButton_2.setAutoRaise(True)
        self.toolButton_2.setObjectName("toolButton_2")
        self.toolBox.addItem(self.page, "")

        #同学设置
        self.page_2 = QtWidgets.QWidget()
        self.page_2.setGeometry(QtCore.QRect(0, 0, 141, 287))
        self.page_2.setObjectName("page_2")
        self.toolButton_3 = QtWidgets.QToolButton(self.page_2)
        self.toolButton_3.setGeometry(QtCore.QRect(0, 0, 91, 51))
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(".\img\qq.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButton_3.setIcon(icon2)
        self.toolButton_3.setIconSize(QtCore.QSize(20,20))
        self.toolButton_3.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolButton_3.setAutoRaise(True)
        self.toolButton_3.setObjectName("toolButton_3")
        self.toolBox.addItem(self.page_2, "")

        #同事设置
        self.page_3 = QtWidgets.QWidget()
        #self.page_3.setGeometry(QtCore.QRect(0, 0, 141, 287))
        self.page_3.setObjectName("page_3")
        self.toolButton_4 = QtWidgets.QToolButton(self.page_3)
        self.toolButton_4.setGeometry(QtCore.QRect(0, 1, 91, 51))
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(".\img\qq.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButton_4.setIcon(icon4)
        self.toolButton_4.setIconSize(QtCore.QSize(20,20))
        self.toolButton_4.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolButton_4.setAutoRaise(True)
        self.toolButton_4.setObjectName("toolButton_4")

        self.toolButton_5 = QtWidgets.QToolButton(self.page_3)
        self.toolButton_5.setGeometry(QtCore.QRect(0, 50, 91, 51))
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(".\img\qq.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButton_5.setIcon(icon3)
        self.toolButton_5.setIconSize(QtCore.QSize(20,20))
        self.toolButton_5.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolButton_5.setAutoRaise(True)
        self.toolButton_5.setObjectName("toolButton_5")
        self.toolBox.addItem(self.page_3, "")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.toolBox.setCurrentIndex(0)  #默认第一个页面
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "我的QQ"))
        self.toolButton.setText(_translate("MainWindow", "宋江"))
        self.toolButton_2.setText(_translate("MainWindow", "卢俊义"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.page), _translate("MainWindow", "我的好友"))
        self.toolButton_3.setText(_translate("MainWindow", "吴用"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.page_2), _translate("MainWindow", "同学"))
        self.toolButton_4.setText(_translate("MainWindow", "鲁智深"))
        self.toolButton_5.setText(_translate("MainWindow", "林冲"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.page_3), _translate("MainWindow", "同事"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

好友
同学
同事

六、日期时间类控件

1.日期和时间控件

Date/Time Edit:(QDateTimeEdit)同时显示和编辑日期时间
DateEdit:(QDateEdit)只能显示和编辑日期
TimeEdit:(QTimeEdit)只能显示和编辑时间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.CalendarWidget:日历控件

CalendarWidget对应QCalendarWidge类,最常用的信号是selectionChanged,该信号在选择日期发生改变时发射。
在这里插入图片描述
在这里插入图片描述
获取选中的日期

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(708, 508)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.calendarWidget = QtWidgets.QCalendarWidget(self.centralwidget)
        self.calendarWidget.setGeometry(QtCore.QRect(70, 50, 501, 361))
        self.calendarWidget.setSelectedDate(QtCore.QDate(2024,5,23)) #设置默认选中日期
        self.calendarWidget.setMinimumDate(QtCore.QDate(1752, 9, 1))  # 设置最小日期
        self.calendarWidget.setMaximumDate(QtCore.QDate(9999, 12, 31))  # 设置最大日期
        self.calendarWidget.setFirstDayOfWeek(QtCore.Qt.Monday) #设置每周的第一天为周一
        self.calendarWidget.setGridVisible(True)  # 设置网格线可见
        self.calendarWidget.setSelectionMode(QtWidgets.QCalendarWidget.SingleSelection) #可以设置选中单个日期
        self.calendarWidget.HorizontalHeaderFormat(QtWidgets.QCalendarWidget.ShortDayNames) #设置水平表头为简短形式,即“周一”
        #设置垂直表头为周数
        self.calendarWidget.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.ISOWeekNumbers)
        self.calendarWidget.setNavigationBarVisible(True)
        self.calendarWidget.setDateEditEnabled(True)
        self.calendarWidget.setObjectName("calendarWidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 708, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        
        self.calendarWidget.selectionChanged.connect(self.getdate)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

    def getdate(self):
        from PyQt5.QtWidgets import QMessageBox
        date = QtCore.QDate(self.calendarWidget.selectedDate()) #获取当前选中日期的QDate对象
        year = date.year()
        month = date.month()
        day = date.day()
        QMessageBox.information(MainWindow,"提示",str(year)+"-"+str(month)+"-"+str(day),QMessageBox.Ok)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

#获取当前系统日期时间
datetime=QtCore.QDateTime.currentDateTime()
#获取当前系统日期
date=QtCore.QDate.currentDate()
#获取当前系统时间
time=QtCore.QTime.currentTime()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值