Class 每个 QStackedWidget 页面
Class for Each QStackedWidget Page
我正在使用 PyQt5 和 Qt-Designer 设计应用程序。
如何为 QstackedWidget 上的每个页面实例化一个 class。我可以在单个 class 中完成,所有小部件都属于同一个 QMainWindow。但是,问题是文件会变得太长且不切实际。如何为每个页面分配 class。例如,class I
处理页面 I
上的所有小部件,而 class II
处理页面 II
上的所有小部件;在 QMainWindow 文件中,我可以分配一个代表每个页面的对象。
我该怎么做?
只需创建多个模块:
widget1.py
from PyQt5.QtWidgets import QWidget
class Widget1(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
widget2.py
from PyQt5.QtWidgets import QWidget
class Widget2(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
main.py
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_()
我正在使用 PyQt5 和 Qt-Designer 设计应用程序。
如何为 QstackedWidget 上的每个页面实例化一个 class。我可以在单个 class 中完成,所有小部件都属于同一个 QMainWindow。但是,问题是文件会变得太长且不切实际。如何为每个页面分配 class。例如,class I
处理页面 I
上的所有小部件,而 class II
处理页面 II
上的所有小部件;在 QMainWindow 文件中,我可以分配一个代表每个页面的对象。
我该怎么做?
只需创建多个模块:
widget1.py
from PyQt5.QtWidgets import QWidget
class Widget1(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
widget2.py
from PyQt5.QtWidgets import QWidget
class Widget2(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
main.py
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_()