0

我正在使用 PyQt5 和 Qt-Designer 来设计应用程序。

如何为 QstackedWidget 上的每个页面实例化一个类。我可以在一个类中完成,所有小部件都属于同一个 QMainWindow。但是,问题是文件会变得太长且不切实际。如何为每个页面分配一个类。例如, classI处理 Page 上的所有小部件, IclassII处理 Page 上的所有小部件II;在 QMainWindow 文件中,我可以分配一个代表每个页面的对象。

我该怎么做?

4

1 回答 1

1

只需创建多个模块:

小部件1.py

from PyQt5.QtWidgets import QWidget
class Widget1(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)

小部件2.py

from PyQt5.QtWidgets import QWidget
class Widget2(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)

主文件

from widget1 import Widget1
from widget2 import Widget2
from PyQt5.QtWidgets import QMainWindow, QApplication

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setTitle("Stackked widget demo")
        self.stacked = QStackedWidget(self)
        self.setCentralWidget(self.stacked)
        self.widget1 = Widget1()
        self.stacked.addWidget(self.widget1)
        self.widget2 = Widget2()
        self.stacked.addWidget(self.widget2)

if __name__ == "__main__":
    app = QApplication([])
    mainwin = MainWindow()
    mainwin.show()
    app.exec_()
于 2021-01-29T19:15:08.377 回答