PyQt5-QSlider和QProgressBar
在UI Designer的组件面板里还有几个常见的用于输入和输出的组件。在Input Widgets分组里有QSlider和QScrollBar两个滑动型输入组件,在Display Widgets分组里的QProgressBar是进度条显示组件。这三个组件都有orientation属性,可以设置为水平或垂直样式。
使用这三个组件设计的示例Demo3_3运行时界面如图3-4所示。当滑动Slider或ScrollBar的滑块改变值时,都将当前值设置为ProgressBar的值。下面几个复选框和RadioButton按钮用于ProgressBar的显示效果设置。
自己设计的界面如下:
该示例是基于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类继承来的,拥有一些相同的属性,在属性编辑器里设置后即可看到效果,这些属性如下。
整体效果如下:
转载请注明出处,欢迎讨论和交流!