【问题标题】:Qt-how to connect a function to a signal in qml with python? using QQmlApplicationEngineQt-如何使用python将函数连接到qml中的信号?使用QQmlApplicationEngine
【发布时间】:2015-08-13 06:53:44
【问题描述】:

这是 qml 文件。 “main.qml”

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1

ApplicationWindow{
    visible:true
    width:640
    height:480
    id:window
    title:asTr("editor")

    signal show(string text)



    TextArea{
        text:"hello"
        onTextChanged:show(text);
    }

}

这是python代码。 “主.py”

import sys
from PyQt5.QtCore import QObject, QUrl, Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine

def show(text):
    print(text)


if __name__ == "__main__":
  app = QApplication(sys.argv)
  engine = QQmlApplicationEngine()
  engine.load('main.qml')
  win = engine.rootObjects()[0]
  win.show()
  sys.exit(app.exec_())

我想将 main.qml 中的信号“show”连接到 main.py 中的插槽“show”。我该怎么做?

【问题讨论】:

    标签: python qt qml


    【解决方案1】:

    首先也是最重要的:不要调用你的信号showshow 已经是 QWindow 的一个插槽。如果您将名称更改为其他名称,那么您可以简单地将 qml 中定义的信号连接到您的 python 代码中:

    qml:

    import QtQuick 2.2
    import QtQuick.Controls 1.1
    import QtQuick.Layouts 1.1
    
    ApplicationWindow{
        visible:true
        width:640
        height:480
        id:window
        title: "editor"
    
        signal textUpdated(string text)
    
    
        TextArea{
            text:"hello"
            onTextChanged: textUpdated(text);
        }
    
    }
    

    蟒蛇:

    import sys
    from PyQt5.QtCore import QObject, QUrl, Qt
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtQml import QQmlApplicationEngine
    
    def show(text):
        print(text)
    
    
    if __name__ == "__main__":
      app = QApplication(sys.argv)
      engine = QQmlApplicationEngine()
      engine.load('main.qml')
      win = engine.rootObjects()[0]
      win.textUpdated.connect(show)
      win.show()
      sys.exit(app.exec_())
    

    【讨论】:

    • 你好!我能再问你一个问题吗? link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2013-06-13
    • 1970-01-01
    • 2013-03-15
    相关资源
    最近更新 更多