PyQT5之滑塊控制元件QSlider

星空28發表於2024-06-13

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


相關文章