PyQt5快速入门到项目实战:9、滑动条QSlider和表盘QDial
pyqt5快速入门到项目实战:9、滑动条QSlider和表盘QDial
9.1 QSlider
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QWidget, QSlider, QLabel, QVBoxLayout, QHBoxLayout
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.slider_1 = QSlider(Qt.Horizontal, self) # 1
self.slider_1.setRange(0, 100) # 2
self.slider_1.valueChanged.connect(lambda: self.on_change_func(self.slider_1)) # 3
self.slider_2 = QSlider(Qt.Vertical, self)
self.slider_2.setMinimum(0) # 4
self.slider_2.setMaximum(100) # 5
self.slider_2.valueChanged.connect(lambda: self.on_change_func(self.slider_2))
self.label = QLabel('0', self) # 6
self.label.setFont(QFont('Arial Black', 20))
self.h_layout = QHBoxLayout()
self.v_layout = QVBoxLayout()
self.h_layout.addWidget(self.slider_2)
self.h_layout.addStretch(1)
self.h_layout.addWidget(self.label)
self.h_layout.addStretch(1)
self.v_layout.addWidget(self.slider_1)
self.v_layout.addLayout(self.h_layout)
self.setLayout(self.v_layout)
def on_change_func(self, slider): # 7
if slider == self.slider_1:
self.slider_2.setValue(self.slider_1.value())
self.label.setText(str(self.slider_1.value()))
else:
self.slider_1.setValue(self.slider_2.value())
self.label.setText(str(self.slider_2.value()))
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
通过传入Qt.Hrizontal可以实例化一个水平的滑动条,传入Qt.Vertical的话可以实例化一个垂直的滑动条;
通过setRange()方法可以设置滑动条的范围;
当滑动时,数值发生改变,触发valueChanged信号;
4-5. 除了setRange()方法,还可以使用setMinimum()和setMaximum()方法来设置最小值和最大值;
这里实例化的QLabel是为了显示出QSlider当前的数值;
在自定义的槽函数中,将两个滑动条的数值同步,然后用QLabel显示出当前数值。
运行截图如下,不管移动哪个滑动条,另一个滑动条的数值会同步,QLabel也会显示出相应的数值:
9.2 QDial
import sys
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QWidget, QDial, QLabel, QHBoxLayout
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.setWindowTitle('QDial') # 1
self.dial = QDial(self)
self.dial.setFixedSize(100, 100) # 2
self.dial.setRange(0, 100) # 3
self.dial.setNotchesVisible(True) # 4
self.dial.valueChanged.connect(self.on_change_func) # 5
self.label = QLabel('0', self)
self.label.setFont(QFont('Arial Black', 20))
self.h_layout = QHBoxLayout()
self.h_layout.addWidget(self.dial)
self.h_layout.addWidget(self.label)
self.setLayout(self.h_layout)
def on_change_func(self):
self.label.setText(str(self.dial.value()))
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
setWindowTitle()方法可以设置窗口标题;
实例化一个QDial控件后,通过setFixedSize()方法来固定QDial的大小。 如果不设置该方法的话,我们会发现在改变表盘数值时,表盘的大小会发生改变;
使用setRange()方法来设置表盘数值范围,当然也可以使用setMinimum()和setMaximum()方法;
setNotchesVisible(True)可以显示刻度,刻度会根据我们设置的数值自动调整;
当改变表盘数值时,会触发valueChanged信号,在槽函数中我们让QLabel显示出当前表盘数值。
运行截图如下:
9.3 小结
可以看出QSlider和QDial用法都差不多;
Qt.QHorizontal和Qt.Vertical分别用来实现水平的滑动条和垂直的滑动条;
setWindowTitle()可以设置窗口标题,setFixedSize()可以固定窗口或控件大小。
网易云课堂搜索课程:Pyqt5通用爬虫桌面软件开发实战
相关文章
- PyQt5快速入门到项目实战:14、PyQt5快速制作界面——Qt Designer
- PyQt5快速入门到项目实战:13、PyQt5文档使用——Qt Assistant
- PyQt5快速入门到项目实战:12、与日期时间相关的控件
- PyQt5快速入门到项目实战:11、液晶数字显示屏QLCDNumber
- PyQt5快速入门到项目实战:10、定时器QTimer和进度条QProgressBar
- PyQt5快速入门到项目实战:9、滑动条QSlider和表盘QDial
- PyQt5快速入门到项目实战:8、下拉选择框QCombox和数字调节框QSpinBox
- PyQt5快速入门到项目实战:7、pyqt5按钮用法代码案例讲解
- PyQt5快速入门到项目实战:6、文本编辑框QTextEdit和文本浏览框QTextBrowser
- PyQt5快速入门到项目实战:5、完善登录框小程序