PySide2(pyqt5)를 직관적으로 읽기 쉽게 작성해 보십시오.

12500 단어 Python3pyside2PyQt5

BoxLayout QtWidgets。QWidget 확장 시도


알 수 없는 것은 QtWidgets입니다.QHBoxLayout 및 QtWidgets.QVBoxLayout은 QtWidgets입니다.QWidget의 확장 때문이 아니라는 것을 이해했습니다.그리고 박스 Layout을 QtWidgets로 바꿉니다.QWidget을 가져오려고 했습니다.그리고layout은 플러그인 구조지만python은 축진에 엄격하기 때문에 더욱 이해하기 어렵다.상당히 강세지만 각본부터 레이아웃 디자인까지 인상적인 묘사법을 고려해 봤다.
import sys
from PySide2 import QtCore,QtWidgets

class HLayoutWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.layout = QtWidgets.QHBoxLayout()
        self.setLayout(self.layout)
    def addWidget(self,w):
        self.layout.addWidget(w)

class VLayoutWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.layout = QtWidgets.QVBoxLayout()
        self.setLayout(self.layout)
    def addWidget(self,w):
        self.layout.addWidget(w)

class Window(HLayoutWidget):
    def __init__(self):
        super().__init__()
        self.resize(500, 500)
        self.setWindowTitle("layout demo")
        leftLayout = VLayoutWidget();                          self.layout.addWidget(leftLayout)
        leftButton1 = QtWidgets.QPushButton();                 leftLayout.addWidget(leftButton1)
        leftButton2 = QtWidgets.QPushButton();                 leftLayout.addWidget(leftButton2)
        leftButton3 = QtWidgets.QPushButton();                 leftLayout.addWidget(leftButton3)
        rightLayout = VLayoutWidget();                         self.layout.addWidget(rightLayout)
        self.rightButton1 = QtWidgets.QPushButton("Button1");  rightLayout.addWidget(self.rightButton1)
        self.rightButton2 = QtWidgets.QPushButton("Button2");  rightLayout.addWidget(self.rightButton2)

        leftLayout.sizeHint = lambda: QtCore.QSize(450,240)
        leftLayout.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Expanding)

        rightLayout.layout.setContentsMargins(0, 0, 0, 0)

        leftButton1.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_TitleBarMenuButton))
        leftButton2.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_MessageBoxInformation))
        leftButton3.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_MessageBoxQuestion))

        self.rightButton1.clicked.connect(self.hoge1)
        self.rightButton2.clicked.connect(self.hoge2)

    def hoge1(self):
        self.rightButton1.setText("Button click")

    def hoge2(self):
        self.rightButton2.setText("Button click")

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

심플한 네스트가 좋아요.


QtWidgets.QHBoxLayout은 addWidget()에 하위를 가질 수 있습니다.하지만 QtWidgets는QWidget처럼 솔리드가 없으므로 치수를 변경할 수 없습니다.크기를 변경하려면 QtWidgets를 사용합니다.QWidget에서는 setLayout을 사용합니다.QWidget에 설정해야 합니다.설정 없이 배치할 수 있습니다.이 부근은 번거로운 곳이다.아예 QtWidgets.QWidget에 addWidget () 를 넣으면 쓰기 방법이 간단해질 것 같아서 시도해 봤습니다.
레이아웃은 플러그인 구조이고python은 축소가 엄격하며 이해하기 어려운 부분은python이다.한 줄로 쓰는 방식으로 친자 관계도 쉽게 이해된다.
레이아웃 부분, 위젯의 미세한 조정, 신호, 슬롯을 분리해 쓰면 Qt 디자이너 없이 직관적으로 쓸 수 있다.상당히 간단해졌다.

좋은 웹페이지 즐겨찾기