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

2018-11-22  本文已影响0人  3ni

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

上一篇下一篇

猜你喜欢

热点阅读