PySide2 窗口类中太多代码,如何分离?

300 阅读1分钟

下面是一个使用Pyside2创建一个带有两个选项卡的主窗口的示例代码。其中,第一个选项卡(tab1)包含一个按钮(button1),第二个选项卡(tab2)则引用了另一个类(Tab2Widget)来创建。在Tab2Widget类中,我们创建了一个按钮(button2),并为其绑定了一个点击事件。

import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QTabWidget, QVBoxLayout, QWidget


class Tab2Widget(QWidget):
    def __init__(self):
        super().__init__()

        button2 = QPushButton("Button 2")
        button2.clicked.connect(self.button2_clicked)

        layout = QVBoxLayout()
        layout.addWidget(button2)
        self.setLayout(layout)

    def button2_clicked(self):
        print("按钮被点击")


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        tab_widget = QTabWidget()
        tab1 = QWidget()
        tab2 = Tab2Widget()

        button1 = QPushButton("Button 1")
        button1.clicked.connect(self.button1_clicked)

        tab1_layout = QVBoxLayout()
        tab1_layout.addWidget(button1)
        tab1.setLayout(tab1_layout)

        tab_widget.addTab(tab1, "Tab 1")
        tab_widget.addTab(tab2, "Tab 2")

        self.setCentralWidget(tab_widget)

    def button1_clicked(self):
        print("按钮被点击")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

在这个示例中,我们创建了一个MainWindow类作为主窗口。在构造函数中,我们创建了一个QTabWidget对象,并向其中添加了两个选项卡(tab1tab2)。在tab1中,我们创建了一个按钮(button1),并为其绑定了一个点击事件。tab2则通过创建Tab2Widget类的实例来获取其内容。

Tab2Widget类中,我们创建了一个按钮(button2),并为其绑定了一个点击事件button2_clicked。当按钮被点击时,它会在控制台输出"按钮被点击"。