PyQt5-QSlider和QProgressBar

在UI Designer的组件面板里还有几个常见的用于输入和输出的组件。在Input Widgets分组里有QSlider和QScrollBar两个滑动型输入组件,在Display Widgets分组里的QProgressBar是进度条显示组件。这三个组件都有orientation属性,可以设置为水平或垂直样式。

使用这三个组件设计的示例Demo3_3运行时界面如图3-4所示。当滑动Slider或ScrollBar的滑块改变值时,都将当前值设置为ProgressBar的值。下面几个复选框和RadioButton按钮用于ProgressBar的显示效果设置。

image

自己设计的界面如下:

image

该示例是基于widgetApp项目模板的,下面是myWidget.py文件的完整代码:

import sys
from PyQt5.QtWidgets import  QWidget,QApplication
from PyQt5.QtCore import pyqtSlot,Qt
from PyQt5.QtGui import QFont

from ui_QtApp import Ui_Form
class QmyWidget(QWidget):
    def __init__(self,parent=None):
        super().__init__(parent) #调用父类构造函数
        self.ui=Ui_Form() #创建UI对象
        self.ui.setupUi(self) #构造UI
        self.ui.horizontalSlider.setMaximum(200)
        self.ui.horizontalScrollBar.setMaximum(200)
        self.ui.progressBar.setMaximum(200)
        self.ui.horizontalSlider.valueChanged.connect(self.do_valueChanged)
        self.ui.horizontalScrollBar.valueChanged.connect(self.do_valueChanged)

    ## ====由connectSlotsByName()自动与组件的信号关联的槽函数=====
    def on_radioButton_clicked(self): #显示格式--百分比
        self.ui.progressBar.setFormat("%p%")

    def on_radioButton_2_clicked(self): #显示格式--当前值
        self.ui.progressBar.setFormat("%v")

    ## =======自定义槽函数=======
    @pyqtSlot(bool) #textVisib复选框
    def on_checkBox_clicked(self, checked):
        self.ui.progressBar.setTextVisible(checked)

    @pyqtSlot(bool) #InvertedAppearance复选框
    def on_checkBox_2_clicked(self, checked):
        self.ui.progressBar.setInvertedAppearance(checked)

    def do_valueChanged(self,value):
        self.ui.progressBar.setValue(value)

if __name__ == "__main__": ##用于当前窗体测试
    app=QApplication(sys.argv) #创建GUI应用程序
    form=QmyWidget() #创建窗体
    form.show()
    sys.exit(app.exec_())

应用程序主程序appMain.py文件如下:

## GUI应用程序主程序
import sys
from PyQt5.QtWidgets import  QApplication
from myWidget import  QmyWidget

app = QApplication(sys.argv) # 创建app,用QApplication类
myWidget = QmyWidget() #创建窗体
myWidget.show()
sys.exit(app.exec_())

QSlider和QScrollBar都是从QAbstractSlider类继承来的,拥有一些相同的属性,在属性编辑器里设置后即可看到效果,这些属性如下。

image

整体效果如下:

image

posted @ 2022-05-28 10:08  司砚章  阅读(255)  评论(0编辑  收藏  举报