出于参考目的,请考虑上面的示例。
在左边我有两个按钮 PAGE1 和 PAGE2,在右边我有一个 QStackedWidget 由两个小部件组成。
我制作了两个单独的 UI 文件,名称分别为 page1.ui 和 page2.ui
我使用“Promote Widget”在堆叠的小部件中添加 page1.ui 和 page2.ui。(参见图片以供参考)
以下是我的文件的结构:
├── main.py
├── pages
│ ├── page1.py
│ ├── page2.py
└── ui
├── main.ui
├── page1.ui
├── page2.ui
我想要实现的是我能够从 Stacked Widget 中的 Widget 更改 Stacked Widget 的索引。
目前我只能通过使用 main.ui 中的按钮来更改 Stacked Widget 的索引。
代码:main.py
import os
from PyQt5 import QtGui, uic, QtWidgets
from functools import partial
current_dir = os.path.dirname(os.path.abspath(__file__))
Form, Base = uic.loadUiType(os.path.join(current_dir, "ui/main.ui"))
class MainWidget(Base, Form):
def __init__(self, parent=None):
super(self.__class__, self).__init__(parent)
self.setupUi(self)
buttons = (self.page1Button, self.page2Button)
for i, button in enumerate(buttons):
button.clicked.connect(partial(self.stackedWidget.setCurrentIndex, i))
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication.instance()
if app is None:
app = QtWidgets.QApplication(sys.argv)
app.setStyle("fusion")
w = MainWidget()
w.show()
sys.exit(app.exec_())
page1.py:
import os
from PyQt5 import QtGui, uic, QtWidgets
current_dir = os.path.dirname(os.path.abspath(__file__))
Form, Base = uic.loadUiType(os.path.join(current_dir, "../ui/page1.ui"))
class page1Window(Base, Form):
def __init__(self, parent=None):
super(self.__class__, self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = page1Window()
w.show()
sys.exit(app.exec_())
page2.py 类似于 page1.py
假设我在 page1.ui 中有一个按钮,如何使用这个按钮来改变 Stacked Widget 的索引?
如果您觉得我遗漏了什么或对我到底想要做什么有疑问,请发表评论。