出于参考目的,请考虑以上示例。
在左侧,我有两个按钮PAGE1和PAGE2,在右侧,我有一个由两个小部件组成的QStackedWidget。
我制作了两个分别名为page1.ui和page2.ui的UI文件。
我使用“促销小部件”在堆叠的小部件内添加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的索引?
如果您觉得我遗漏了任何东西或对我真正想做的事情有疑问,请发表评论。
答案 0 :(得分:0)
好的,我设法使其正常运行。事实证明,解决方案非常简单
这是我所做的: main.py:
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)