美文网首页
PySide2学习记录(四):定义自己的widget

PySide2学习记录(四):定义自己的widget

作者: 3ni | 来源:发表于2018-11-22 10:30 被阅读0次

    Python版本3.7
    PySide2 Version: 5.14.1
    官方文档:http://doc.qt.io/qtforpython/index.html

    利用已有的widget来组合成一个新的widget来进行复用。

    from PySide2.QtWidgets import QLCDNumber, QSlider, QWidget, QVBoxLayout, QApplication, QGridLayout
    from PySide2.QtCore import Qt
    
    class MyLCDNumber(QWidget):
        def __init__(self, parent=None):
            super().__init__(parent)
    
            self.lcd_number = QLCDNumber()
            # 初始化一个水平的slider,默认是垂直的
            self.slider = QSlider(Qt.Horizontal)
            # 垂直布局
            self.layout = QVBoxLayout()
    
            self.layout.addWidget(self.lcd_number)
            self.layout.addWidget(self.slider)
    
            self.setLayout(self.layout)
            # 设置整个控件的固定大小
            self.setFixedSize(120, 100)
    
            # 设置最多显示两位数
            self.lcd_number.setDigitCount(2)
            # 设置可以调节的范围大小
            self.slider.setRange(0, 99)
            # 信号与槽的连接
            self.slider.valueChanged.connect(self.lcd_number.display)
    
    
    app = QApplication()
    window = QWidget()
    # 网格布局
    layout = QGridLayout()
    mylcdnumber01 = MyLCDNumber()
    mylcdnumber02 = MyLCDNumber()
    mylcdnumber03 = MyLCDNumber()
    mylcdnumber04 = MyLCDNumber()
    layout.addWidget(mylcdnumber01, 1, 1)
    layout.addWidget(mylcdnumber02, 1, 2)
    layout.addWidget(mylcdnumber03, 2, 1)
    layout.addWidget(mylcdnumber04, 2, 2)
    window.setLayout(layout)
    window.show()
    app.exec_()
    

    运行截图:

    图1

    自定义一个widget,首先需要继承QWidget这个类,然后在构造方法里面调用父类的构造方法,之后就可以自己定义一些需要组合的控件了。这里还没有完善,一般情况下还需要将对外提供一些信号和槽,因为此时MyLCDNumber就是一个整体的控件了,应该要向外提供内部控件的操作,封装操作内部控件的细节。

    友情链接:
    QWidget
    QLCDNumber
    QGridLayout
    QVBoxLayout
    QSlider

    相关文章

      网友评论

          本文标题:PySide2学习记录(四):定义自己的widget

          本文链接:https://www.haomeiwen.com/subject/xviwfqtx.html