如何使用带有多个python文件的QML构建PyQt5项目?
我刚刚开始使用PyQt5和QML,目前有一个main.py文件,其中包含一些简单的代码:如何使用带有多个python文件的QML构建PyQt5项目?,python,qt,qml,pyqt5,Python,Qt,Qml,Pyqt5,我刚刚开始使用PyQt5和QML,目前有一个main.py文件,其中包含一些简单的代码: if __name__ == '__main__': app = QGuiApplication(sys.argv) engine = QQmlApplicationEngine() engine.load('QML/MainWindow.qml') sys.exit(app.exec_()) 在my Main Window.QML中,我有一个应用程序窗口,带有一个工具栏和
if __name__ == '__main__':
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load('QML/MainWindow.qml')
sys.exit(app.exec_())
在my Main Window.QML中,我有一个应用程序窗口,带有一个工具栏和一个StackView,根据按钮的点击等,当前可以推送和弹出不同的QML文件
我很好奇是否有一种合适的方法可以为每个QML文件使用Python文件,就像WPF中的Settings.xaml和Settings.xaml.cs一样。我想要Settings.qml和Settings.py文件,该文件中的模型和逻辑将在该页面中划分,而不是有一个庞大的main.py文件。我通过执行以下操作解决了这个问题: Main.py:
def settings_clicked():
stackView.push(Settings(engine, stackView).load())
if __name__ == '__main__':
app = QGuiApplication(sys.argv)
engine = QQmlEngine()
component = QQmlComponent(engine)
component.loadUrl(QUrl('QML/MainWindow.qml'))
mainWindow = component.create()
stackView = mainWindow.findChild(QObject, "stackView")
home = Home(engine, stackView)
home.load()
sys.exit(app.exec_())
Home.py(StackView中的第一个初始页面)
Settings.py:
class Settings:
def __init__(self, engine, stackview):
self.engine = engine
self.stackview = stackview
def load(self):
self.component = QQmlComponent(self.engine)
self.component.loadUrl(QUrl('QML/Settings/Settings.qml'))
self.settings = self.component.create()
# Attach to signals, etc.
self.stackview.push(self.settings)
这将允许我将业务逻辑组织到不同的Python页面中,并为GUI提供单独的QML文件
class Settings:
def __init__(self, engine, stackview):
self.engine = engine
self.stackview = stackview
def load(self):
self.component = QQmlComponent(self.engine)
self.component.loadUrl(QUrl('QML/Settings/Settings.qml'))
self.settings = self.component.create()
# Attach to signals, etc.
self.stackview.push(self.settings)