• PyQt5 控件学习(一个一个学习之QSlider)


    QSlider的继承图:

    QSlider的描述:

    QSlider的继承:

    它 继承自 QAbstractSlider ,

    QSlider的功能作用:

    刻度控制

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QSlider 的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
            slider =QSlider(self)
            slider.move(200,200)
            slider.resize(30,200)
            #刻度
            # slider.setSliderPosition(QSlider.TicksLeft)
            slider.setTickPosition(QSlider.TicksBothSides)
    
            #调整刻度的密度
            slider.setTickInterval(5)
    
            btn = QPushButton(self)
            btn.setText("按钮")
            btn.move(0,300)
            btn.clicked.connect(self.btn_clicked_slot)
    
            slider.valueChanged.connect(lambda val:print(val))
    
        def test(self):
            pass
    
        def btn_clicked_slot(self):
            pass
    
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    案例:

    from PyQt5.Qt import *  # 刚开始学习可以这样一下导入
    import sys
    
    
    class MySlider(QSlider):
        def __init__(self, parent=None, *args, **kwargs):
            super().__init__(parent, *args, **kwargs)
            self.setup_ui()
            self.setMaximum(100)
            self.setMinimum(0)
    
        def setup_ui(self):
            self.setTickPosition(QSlider.TicksBothSides)
            self.label = QLabel(self)
            self.label.setText("0")
            self.label.setStyleSheet("background-color:red;")
            self.label.hide()
    
        def mousePressEvent(self, event):
            QMouseEvent
            super().mousePressEvent(event)
            x = (self.width() - self.label.width()) / 2
            y = (self.maximum() - self.value()) / (self.maximum() - self.minimum()) * (self.height() -self.label.height())
            self.label.show()
            self.label.move(x, y)
    
        def mouseMoveEvent(self, event):
            super().mouseMoveEvent(event)
            x = (self.width() - self.label.width()) / 2
            y = (self.maximum() - self.value()) / (self.maximum() - self.minimum()) * (self.height() -self.label.height())
            self.label.move(x, y)
            self.label.setText(str(self.value()))
            self.label.adjustSize()    # 它要放在这种检测的事件方法中
    
        def mouseReleaseEvent(self, event):
            super().mouseReleaseEvent(event)
            self.label.hide()
    
    
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QSlider 案例的学习")
            self.resize(400, 400)
            self.set_ui()
    
        def set_ui(self):
            slider = MySlider(self)
            slider.move(200, 200)
            slider.resize(30, 200)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    QSlider的信号:

    看它的父类

    总结:

    我们看下个滑块控件:QScrollBar  :https://www.cnblogs.com/zach0812/p/11391839.html

  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/zach0812/p/11391472.html
Copyright © 2020-2023  润新知