PyQt5高级控件

一、进度条类控件

1.ProgressBar:进度条

在这里插入图片描述
在这里插入图片描述
ProgressBar最常用的信号是valueChanged,在进度条值发生改变时发射。
在这里插入图片描述
注意:如果最小值和最大值都设置为0,那么进度条会显示为一个不断循环滚动的繁忙进度,而不是步骤中显示的百分比。

模拟一个跑马灯效果

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(305,259)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(50, 10, 201, 31))
        self.progressBar.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.progressBar.setProperty("value",-1)
        self.progressBar.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
        self.progressBar.setTextVisible(True)
        self.progressBar.setOrientation(QtCore.Qt.Horizontal)
        self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
        self.progressBar.setFormat("")
        self.progressBar.setObjectName("progressBar")
        self.progressBar_2 = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar_2.setGeometry(QtCore.QRect(50, 180, 201, 31))
        self.progressBar_2.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.progressBar_2.setProperty("value", -1)
        self.progressBar_2.setAlignment(QtCore.Qt.AlignBottom | QtCore.Qt.AlignHCenter)
        self.progressBar_2.setTextVisible(True)
        self.progressBar_2.setOrientation(QtCore.Qt.Horizontal)
        self.progressBar_2.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
        self.progressBar_2.setObjectName("progressBar_2")
        self.progressBar_3 = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar_3.setGeometry(QtCore.QRect(20, 10, 31, 201))
        self.progressBar_3.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.progressBar_3.setProperty("value", -1)
        self.progressBar_3.setAlignment(QtCore.Qt.AlignLeading| QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
        self.progressBar_3.setTextVisible(True)
        self.progressBar_3.setOrientation(QtCore.Qt.Vertical)
        self.progressBar_3.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
        self.progressBar_3.setObjectName("progressBar_3")
        self.progressBar_1 = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar_1.setGeometry(QtCore.QRect(250, 10, 31, 201))
        self.progressBar_1.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.progressBar_1.setProperty("value", -1)
        self.progressBar_1.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
        self.progressBar_1.setTextVisible(True)
        self.progressBar_1.setOrientation(QtCore.Qt.Vertical)
        self.progressBar_1.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
        self.progressBar_1.setObjectName("progressBar_1")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(90, 220, 101, 31))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.timer = QtCore.QBasicTimer() #创建计时器对象
        self.pushButton.clicked.connect(self.running) #为按钮绑定单击信号

    def running(self):
        if self.timer.isActive():  #判断计时器是否开启
            self.timer.stop()  #停止计时器
            self.pushButton.setText('开始') #设置按钮的文本
            self.progressBar.setMaximum(100)
            self.progressBar_1.setMaximum(100)
            self.progressBar_2.setMaximum(100)
            self.progressBar_3.setMaximum(100)

        else:
            self.timer.start(100,MainWindow) #启动计时器
            self.pushButton.setText('停止') #设置按钮文本
            #4个进度条最大最小值设置为0,滚动循环
            self.progressBar.setMinimum(0)
            self.progressBar.setMaximum(0)
            self.progressBar_1.setInvertedAppearance(True) #设置进度反方向显示
            self.progressBar_1.setMinimum(0)
            self.progressBar_1.setMaximum(0)
            self.progressBar_2.setMinimum(0)
            self.progressBar_2.setMaximum(0)
            self.progressBar_3.setMinimum(0)
            self.progressBar_3.setMaximum(0)


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_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_())

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

2.自定义等待提示框

设置自定义等待提示框

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 437)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.loading = QtWidgets.QLabel(self.centralwidget)
        self.loading.setGeometry(QtCore.QRect(200, 20, 500, 400))
        self.loading.setStyleSheet("")
        self.loading.setText("")
        self.loading.setObjectName("loading")
        self.pushButton_start = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_start.setGeometry(QtCore.QRect(250, 200, 100, 50))
        self.pushButton_start.setObjectName("pushButton_start")
        self.pushButton_stop = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_stop.setGeometry(QtCore.QRect(550, 200, 100, 50))
        self.pushButton_stop.setObjectName("pushButton_stop")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.pushButton_start.clicked.connect(self.start_loading)
        self.pushButton_stop.clicked.connect(self.stop_loading)

    def start_loading(self):
        self.gif = QtGui.QMovie(".\img\loading.gif") #加载gif
        self.loading.setMovie(self.gif) #设置gif
        self.gif.start()

    def stop_loading(self):
        self.gif.stop()
        self.loading.clear()

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_start.setText(_translate("MainWindow", "启动等待提示"))
        self.pushButton_stop.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.滑块:QSlider

Horizontal Slider:水平滑块
Vertical Slider:垂直滑块
在这里插入图片描述
使用滑块改变刻度值及标签中的字体大小

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(313, 196)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        #水平布局管理器
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 70, 251, 80))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        #水平滑块
        self.horizontalSlider = QtWidgets.QSlider(self.centralwidget)
        self.horizontalSlider.setGeometry(QtCore.QRect(20, 10, 231, 22))
        self.horizontalSlider.setMinimum(8)
        self.horizontalSlider.setMaximum(72)
        self.horizontalSlider.setSingleStep(1)#设置通过鼠标拖动时的步长值
        self.horizontalSlider.setPageStep(1)#设置通过鼠标点击时的步长值
        self.horizontalSlider.setProperty("value",8)#默认值为8
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
        self.horizontalSlider.setTickInterval(3) #设置刻度间隔
        self.horizontalSlider.setObjectName("horizontalSlider")
        #垂直滑块
        self.verticalSlider = QtWidgets.QSlider(self.centralwidget)
        self.verticalSlider.setGeometry(QtCore.QRect(270, 20, 22, 171))
        self.verticalSlider.setMinimum(8)
        self.verticalSlider.setMaximum(72)
        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)
        self.verticalSlider.setInvertedAppearance(True)#设置刻度反方向显示
        self.verticalSlider.setTickPosition(QtWidgets.QSlider.TicksRight)
        self.verticalSlider.setTickInterval(3)  # 设置刻度间隔
        self.verticalSlider.setObjectName("verticalSlider")
        #label显示文字
        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)
        self.label.setAlignment(QtCore.Qt.AlignCenter)#设置文字居中对齐
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label) #label添加到水平布局管理器中
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        #为水平滑块绑定valueChanged信号,在值发生改变时发射
        self.horizontalSlider.valueChanged.connect(self.setfontsize)

    def setfontsize(self):
        value = self.horizontalSlider.value()
        self.verticalSlider.setValue(value)
        self.label.setFont(QtGui.QFont("楷体",value))

    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_())

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

二、树控件

1.TreeView:树视图

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

使用内置模型中的数据

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

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(663, 421)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.treeView = QtWidgets.QTreeView(self.centralwidget)
        self.treeView.setGeometry(QtCore.QRect(0, 0, 471, 281))
        self.treeView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) #设置垂直滚动条按需显示
        self.treeView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) #设置水平滚动条按需显示
        #双击或按下回车,树节点可编辑
        self.treeView.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed)
        #设置树节点为单选
        self.treeView.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
        self.treeView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) #设置选中节点时为整行选中
        self.treeView.setAutoExpandDelay(-1) #设置自动展开的延时为-1,表示自动展开不可用
        self.treeView.setItemsExpandable(True) #设置是否可以展开项
        self.treeView.setSortingEnabled(True) #设置单击头部可排序
        self.treeView.setWordWrap(True) #设置自动换行
        self.treeView.setHeaderHidden(False) #设置不隐藏头部
        self.treeView.setExpandsOnDoubleClick(True) #设置双击可以展开节点
        self.treeView.setObjectName("treeView")
        self.treeView.header().setVisible(True) #设置显示头部
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        model = QtWidgets.QDirModel() #创建存储文件系统的模型
        self.treeView.setModel(model) #为树控件设置数据模型

    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_())

在这里插入图片描述

使用自定义数据

使用TreeView显示各个班级的学生成绩信息

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(737, 511)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        #树视图
        self.treeView = QtWidgets.QTreeView(self.centralwidget)
        self.treeView.setGeometry(QtCore.QRect(0, 0, 421, 201))
        self.treeView.setObjectName("treeView")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        model = QtGui.QStandardItemModel() #创建数据模型
        model.setHorizontalHeaderLabels(['年级','班级','姓名','分数'])
        #姓名列表
        name = ['马云','李彦宏','刘强东','任正非','程维']
        score = [65,78,89,90,69]
        import random
        #设置数据
        for i in range(0,6):
            #一级节点:年级,只设第一列
            grade = QtGui.QStandardItem(("%s年级")%(i+1))
            model.appendRow(grade)
            for j in range(0,4):
                #二级节点,班级,姓名,分数
                itemClass = QtGui.QStandardItem(("%s班")%(j+1))
                itemName = QtGui.QStandardItem(name[random.randrange(5)])
                itemScore = QtGui.QStandardItem(str(score[random.randrange(5)]))
                #二级节点添加到一级节点上
                grade.appendRow([QtGui.QStandardItem(""),itemClass,itemName,itemScore])
        self.treeView.setModel(model)#为TreeView设置数据模型

    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_())

在这里插入图片描述

2.TreeWidge:树控件

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

使用TreeWidget控件显示树结构

实例6.6

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


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(564, 436)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
        self.treeWidget.setGeometry(QtCore.QRect(0,0,564,436))
        self.treeWidget.setObjectName("treeWidget")
        self.treeWidget.setColumnCount(2)
        self.treeWidget.setHeaderLabels(['姓名','职务'])
        root=QTreeWidgetItem(self.treeWidget)#创建节点
        root.setText(0,'组织结构') #设置顶级节点文本
        #定义字典,存储树结构中显示的数据
        dict={'任正非':'华为董事长','马云':'阿里巴巴创始人','李彦宏':'百度CEO'}
        for key,value in dict.items():
            child=QTreeWidgetItem(root)#创建子节点
            child.setText(0,key)
            child.setText(1,value)
        self.treeWidget.addTopLevelItem(root)#将创建的树节点添加到树控件中
        self.treeWidget.expandAll()#展开所有树节点
        MainWindow.setCentralWidget(self.centralwidget)
        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_())

在这里插入图片描述

为节点设置图标

为实例6.6中的第一列每个企业家姓名前设置图标

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


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(564, 436)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
        self.treeWidget.setGeometry(QtCore.QRect(0,0,564,436))
        self.treeWidget.setObjectName("treeWidget")
        self.treeWidget.setColumnCount(2)
        self.treeWidget.setHeaderLabels(['姓名','职务'])
        root=QTreeWidgetItem(self.treeWidget)#创建节点
        root.setText(0,'组织结构') #设置顶级节点文本
        #定义字典,存储树结构中显示的数据
        dict={'任正非':'华为董事长','马云':'阿里巴巴创始人','李彦宏':'百度CEO'}
        for key,value in dict.items():
            child=QTreeWidgetItem(root)#创建子节点
            child.setText(0,key)
            child.setText(1,value)
            if key=='任正非':
                child.setIcon(0,QtGui.QIcon('img/huawei.jpg'))
            elif key=='马云':
                child.setIcon(0,QtGui.QIcon('img/albb.jpg'))
            if key=='李彦宏':
                child.setIcon(0,QtGui.QIcon('img/baidu.png'))
        self.treeWidget.addTopLevelItem(root)#将创建的树节点添加到树控件中
        self.treeWidget.expandAll()#展开所有树节点
        MainWindow.setCentralWidget(self.centralwidget)
        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_())

在这里插入图片描述

三、分割控件

1.QFrame:分割线

在这里插入图片描述

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(604, 452)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10,50,261,16))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(10, 80,261,16))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(10, 110,261,16))
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(5, 10, 261,16))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(350,120,50,101))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(420,120,50,101))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(470, 120, 50, 101))
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(350, 5, 120, 30))
        self.label_8.setObjectName("label_8")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(70,50,261,16))
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)#下沉显示的边框阴影
        self.line.setLineWidth(8)
        self.line.setMidLineWidth(8)
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(70,80,261,16))
        self.line_2.setFrameShadow(QtWidgets.QFrame.Plain) #无阴影
        self.line_2.setLineWidth(8)
        self.line_2.setMidLineWidth(8)
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setObjectName("line_2")
        self.line_3 = QtWidgets.QFrame(self.centralwidget)
        self.line_3.setGeometry(QtCore.QRect(70,110,261,16))
        self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Raised) #凸起显示的边框阴影
        self.line_3.setLineWidth(8)
        self.line_3.setMidLineWidth(8)
        self.line_3.setObjectName("line_3")
        self.line_4 = QtWidgets.QFrame(self.centralwidget)
        self.line_4.setGeometry(QtCore.QRect(370,50,16,101))
        self.line_4.setLineWidth(4)
        self.line_4.setMidLineWidth(4)
        self.line_4.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken) #垂直分割线下沉显示
        self.line_4.setObjectName("line_4")
        self.line_5 = QtWidgets.QFrame(self.centralwidget)
        self.line_5.setGeometry(QtCore.QRect(430,50,16,101))
        self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_5.setFrameShadow(QtWidgets.QFrame.Plain)#无阴影
        self.line_5.setLineWidth(4)
        self.line_5.setMidLineWidth(4)
        self.line_5.setObjectName("line_5")
        self.line_6 = QtWidgets.QFrame(self.centralwidget)
        self.line_6.setGeometry(QtCore.QRect(480,50,16,101))
        self.line_6.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_6.setLineWidth(4)
        self.line_6.setMidLineWidth(4)
        self.line_6.setFrameShadow(QtWidgets.QFrame.Raised)
        self.line_6.setObjectName("line_6")
        self.line_7 = QtWidgets.QFrame(self.centralwidget)
        self.line_7.setGeometry(QtCore.QRect(330, 0, 20, 200))
        self.line_7.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_7.setObjectName("line_7")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 604, 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.label.setText(_translate("MainWindow", "Sunken"))
        self.label_2.setText(_translate("MainWindow", "Plain"))
        self.label_3.setText(_translate("MainWindow", "Raised"))
        self.label_4.setText(_translate("MainWindow", "水平分割线"))
        self.label_5.setText(_translate("MainWindow", "Sunken"))
        self.label_6.setText(_translate("MainWindow", "Plain"))
        self.label_7.setText(_translate("MainWindow", "Raised"))
        self.label_8.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.QSpacerItem:弹簧

弹簧控件只在设计窗口时显示,实际运行中不显示
使用弹簧控件改变控件位置
在这里插入图片描述
在这里插入图片描述

四、其他控件

1.Dial:旋钮控件

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

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(568, 436)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        #垂直布局管理器,显示文字
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(130,20,251,81))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0,0,0,0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.dial = QtWidgets.QDial(self.centralwidget)
        self.dial.setGeometry(QtCore.QRect(20,20,71,71))
        self.dial.setMinimum(8)
        self.dial.setMaximum(71)
        self.dial.setNotchesVisible(True)
        self.dial.setObjectName("dial")
        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)
        self.label.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.dial.valueChanged.connect(self.setfontsize)

    def setfontsize(self):
        value = self.dial.value()
        self.label.setFont(QtGui.QFont("楷体",value))

    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_())

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

2.QScrollBar:滚动条

Horizontal Scroll Bar:水平滚动条
Vertical Scroll Bar:垂直滚动条

在这里插入图片描述
滚动条控件也是一种特殊的滑块控件

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值