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

egfconnor

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

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

在我的MainWindow.QML中,我有一个ApplicationWindow,带有一个工具栏和一个StackView,当前它根据按钮的点击等来推动和弹出不同的QML文件。

我很好奇,是否存在一种适当的方法来为每种QML文件(如WPF)使用Python文件,例如WPF,其中有Settings.xaml和Settings.xaml.cs。我想要Settings.qml和一个Settings.py文件,该文件将在其中为该页面分隔模型和逻辑,而不是一个庞大的main.py文件。

egfconnor

我最终通过执行以下操作解决了这个问题:

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中的第一个初始页面)

class Home:

    def __init__(self, engine, stackview):
        self.engine = engine
        self.stackview = stackview

    def load(self):
        self.component = QQmlComponent(self.engine)
        self.component.loadUrl(QUrl('QML/Home.qml'))

        self.home = self.component.create()

        self.settings_button = self.home.findChild(QObject, "settingsButton")
        self.settings_button.clicked.connect(self.settings_clicked)

        self.stackview.push(self.home)

    def settings_clicked(self):
        self.settings = Settings(self.engine, self.stackview)
        self.settings.load()

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文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 PyInstaller 在 --onefile 中使用 QML 构建 PyQt5

来自分类Dev

如何从QML关闭Pyqt5程序?

来自分类Dev

Eclipse:如何使用带有外部项目依赖项的ant构建可执行jar?

来自分类Dev

带有QML的PyQt5可执行应用程序

来自分类Dev

带有QML的PyQt5可执行应用程序

来自分类Dev

使用 Python 的 PYQT5

来自分类Dev

使用 PyQt5 从 Python 脚本加载 QDesigner UI 文件

来自分类Dev

Qt5 / PyQt5:具有QML前端和Python后端的自定义QML组件

来自分类Dev

Qt5 / PyQt5:具有QML前端和Python后端的自定义QML组件

来自分类Dev

如何使用pyqt在列表视图中显示带有复选框的多个文件名

来自分类Dev

如何为ASP.NET 5项目设置TeamCity构建

来自分类Dev

在构建ASP.NET 5项目时如何抑制警告?

来自分类Dev

如何使用PyQt5 for Python显示计时器

来自分类Dev

如何在Python中使用PyQt5绘制折线?

来自分类Dev

如何编译使用python 3.8的PyQt5程序

来自分类Dev

使用QWebKit构建Qt5项目时出现问题

来自分类Dev

带有RestKit v0.21.0的XCode 5项目将无法编译

来自分类Dev

osx cmake构建Qt5项目

来自分类Dev

在VSO中构建ASP.NET 5项目

来自分类Dev

PyQt5 QML信号到Python插槽?

来自分类Dev

在 PyQt5 中使用 Radialbar QML 端口

来自分类Dev

python PyQT5中带有外来字符的Python正则表达式

来自分类Dev

如何为Visual C ++ 2013项目使用外部构建系统?

来自分类Dev

使用循环创建带有单击事件的 pyqt5 按钮

来自分类Dev

如何在Ubuntu上构建PyQt5

来自分类Dev

使用PyQt5将多个HTML文件转换为PDF

来自分类Dev

如何构建包括依赖项的Python项目?

来自分类Dev

如何使用PyQt5 QtMultimedia

来自分类Dev

PyQt5 QPushbutton带有附加参数

Related 相关文章

热门标签

归档