如何使用QML和多个python文件构建PyQt5项目?

2024-03-28 22:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始使用PyQt5和QML,目前有一个主.py包含一些简单代码的文件:

if __name__ == '__main__':
    app = QGuiApplication(sys.argv)
    engine = QQmlApplicationEngine()
    engine.load('QML/MainWindow.qml')
    sys.exit(app.exec_())

在我的主窗口.QML我有一个应用程序窗口,有一个工具栏和一个StackView,它根据按钮的点击来推送和弹出不同的QML文件

我很好奇是否有一种适当的方法可以为每个QML文件使用Python文件,就像WPF一样设置.xaml以及设置.xaml.cs. 我想设置.qml还有一个设置.py该文件将为该页划分模型和逻辑,而不是主.py文件。在


Tags: 文件代码namepyappifmainsys
1条回答
网友
1楼 · 发布于 2024-03-28 22:38:46

我最终通过以下方式解决了这个问题:

在主.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_())

在主页.py(StackView中的第一个初始页面)

^{pr2}$

在设置.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文件。在

相关问题 更多 >