import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class QSliderDemo(QWidget):
def __init__(self):
super(QSliderDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('滑塊控制元件演示') # 建立視窗標題
self.resize(800, 600) # 設定主視窗大小
layout = QVBoxLayout() # 垂直佈局
# todo Lable 建立根據水平位置的滑塊數值大小而改變的顯示標籤(字元)
self.label = QLabel('水平滑塊—字型大小') # 要顯示的內容
self.label.setAlignment(Qt.AlignCenter) # 居中顯示
# todo Lable1 建立根據垂直位置的滑塊數值大小而改變的顯示標籤(字元)
self.label1 = QLabel('垂直滑塊—字型大小') # 要顯示的內容
self.label1.setAlignment(Qt.AlignCenter) # 居中顯示
# todo Lable2 建立根據水平位置的滑塊數值大小而改變的顯示標籤(字元)
self.label2 = QLabel('水平滑塊—字型位移') # 要顯示的內容
self.label2.setFont(QFont('Arial', 20)) # 設定字型大小(靜態)
# todo Lable3 建立根據垂直位置的滑塊數值大小而改變的顯示標籤(字元)
self.label3 = QLabel('垂直滑塊—字型位移') # 要顯示的內容
self.label1.setFont(QFont('Arial', 20)) # 設定字型大小(靜態)
# todo 將label,label1,label2,label3畫出
layout.addWidget(self.label)
layout.addWidget(self.label1)
layout.addWidget(self.label2)
layout.addWidget(self.label3)
# todo 建立一個水平的滑塊
""" * * * * 水 * * 平 * * * 滑 * * * * 塊 * * * * """
self.slider = QSlider(Qt.Horizontal) # 水平(左右拖動)
# 設定最小值
self.slider.setMinimum(10)
# 設定最大值
self.slider.setMaximum(50)
# 步長
self.slider.setSingleStep(5)
# 設定當前值
self.slider.setValue(10)
# 設定刻度的位置,刻度在下邊
self.slider.setTickPosition(QSlider.TicksBelow)
# 設定刻度得間隔
self.slider.setTickInterval(1)
layout.addWidget(self.slider) # 畫出控制元件(滑塊控制元件)
self.slider.valueChanged.connect(self.valueChange) # 繫結訊號槽
# todo 建立一個垂直的滑塊
""" * * * * 垂 * * 直 * * * 滑 * * * * 塊 * * * * """
self.slider1 = QSlider(Qt.Vertical) # 垂直滑塊
# 設定最小值
self.slider1.setMinimum(5)
# 設定最大值
self.slider1.setMaximum(30)
# 步長
self.slider1.setSingleStep(5)
# 設定當前值
self.slider1.setValue(5)
# 設定刻度的位置,刻度在左邊
self.slider1.setTickPosition(QSlider.TicksLeft)
# 設定刻度間隔
self.slider1.setTickInterval(5)
layout.addWidget(self.slider1) # 畫出控制元件(滑塊控制元件)
self.slider1.valueChanged.connect(self.valueChange) # 繫結訊號槽
self.setLayout(layout) # 在主視窗中顯示出上述控制元件
def valueChange(self):
print('——————水平滑塊當前值為——————: %s' % self.slider.value())
print('++++++垂直滑塊當前值為++++++: %s' % self.slider1.value())
size = self.slider.value() # 水平滑塊位置的值
size1 = self.slider1.value() # 垂直滑塊位置的值
# todo 看lable,lable1根據滑塊值對字號改變
self.label.setFont(QFont('Arial', size)) # 設定字型大小
self.label1.setFont(QFont('Arial', size1)) # 設定字型大小
# todo 註釋掉上面兩行程式碼,並使用下面兩行程式碼可以看到Lable2,Lable3位置變化
# self.label2.move(size*30, size1*30)
# self.label3.move(size1 * 30, size * 30)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = QSliderDemo()
main.show()
sys.exit(app.exec_())