2014-06-08 26 views
5

Python PyQt5 koduna .qml komut dosyasında oluşturduğum düğmeleri nasıl bağlarım?Düğmelere nasıl bağlanır Qt Hızlı Python PyQt 5

örnek: piton:

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

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    engine = QQmlApplicationEngine() 
    ctx = engine.rootContext() 
    ctx.setContextProperty("main", engine) 

    engine.load('test.qml') 

    win = engine.rootObjects()[0] 
    win.show() 
    sys.exit(app.exec_()) 

QML: düğmesi nasıl Python ile bir şeyler yapabiliriz

import QtQuick 2.2 
import QtQuick.Window 2.1 
import QtQuick.Controls 1.2 
import QtQuick.Dialogs 1.1 

ApplicationWindow { 
title: qsTr("Test Invoke") 

width: 200 
height: 100 

Button{ 
    y : 70 
    text : "About" 
    onClicked: { 
    print('Hello') 
    } 

} 
} 

tıklandığında? Ayrıca: Herkes iyi bir örnek veya doküman kaynağına sahiptir. pyqt + qml (qt hızlı) hakkında?

+0

Gösterdiğiniz kod, e-posta ile yazdırılan python kodudur, özel olarak yerine koymak istemediğiniz başka ne yapmak istersiniz? – Schollii

+0

Bu uygulama çok basit, sadece qq düğmesine pyqt ile bağlanmak istiyorum. Gerçek uygulamam, bir Web Hizmetiyle iletişimi başlatmak için düğmelerini kullanacaktır. – Daivid

+0

PyQt + QML örneğini istediniz. İşte tüm mantık Python ve UI QML içinde olduğu bir Sudoku oyunu için bir link: https://github.com/pkobrien/sudoku-qml –

cevap

3

Düğmeye ad verirseniz, onClick sinyaline veya onClicked içinde yaydığı özel bir sinyale bağlanabilirsiniz. Örnek:

ApplicationWindow { 
title: qsTr("Test Invoke") 
width: 200 
height: 100 

Button { 
    signal messageRequired 
    objectName: "myButton" 
    y : 70 
    text : "About" 
    onClicked: messageRequired() 

} 
} 

Not Düğme sinyal ve ObjectName özelliği. Yukarıdaki Button, onClicked sadece messageRequired sinyal yayar olduğunu

def myFunction(): 
    print 'handler called' 

button = win.findChild(QObject, "myButton") 
button.messageRequired.connect(myFunction) 
button.clicked.connect(myFunction) # works too 

Not, nedenle özel sinyalini bırakın ve doğrudan clicked bağlanmak için daha iyidir: O zaman sadece exec önce Python kodu örneğin olabilir. Düğmeye tıkladığınızda, onClicked() ve clicked'a bağlı herhangi bir yuva da çağrılır.

+0

Eski örnek çalışmadı. PyQt5, QDeclarativeView sınıfına sahip değildir. [Burada] (http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html); Son olarak, demolarda yapmaya çalıştığım şeye benzer bir şey bulamadım. traceback (en son çağrı son): – Daivid

+0

örnek – Schollii

+0

Elimde olan ile güncellendi "\ main.py" Dosya win.myButton.messageRequired.connect (myFunction) AttributeError içinde, satır 29: 'QWindow 'nesnenin özniteliği yoktur' myButton ' – Daivid