2014-06-08 7 views
5

पीक्यूटी 5 कोड को पाइथन के लिए .qml स्क्रिप्ट में बनाए गए बटन को कैसे बाध्य कर सकते हैं?क्यूटी क्विक टू पाइथन पीओक्यूटी 5

उदाहरण: अजगर:

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:

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') 
    } 

} 
} 

बटन कैसे मैं अजगर के साथ कुछ कर सकते हैं क्लिक किया जाता है जब? इसके अलावा: क्या किसी के पास उदाहरण या दस्तावेज़ का अच्छा संसाधन है। pyqt + qml (qt quick) के बारे में?

+0

आपके द्वारा दिखाया गया कोड पाइथन कोड है जो हैलो प्रिंट करता है, आप विशेष रूप से और क्या करना चाहते हैं कि आप इसके बजाय वहां नहीं डाल सकते? – Schollii

+0

यह एप्लिकेशन बहुत आसान है, मैं सिर्फ qq बटन को pyqt से कनेक्ट करना चाहता हूं। मेरा असली एप्लिकेशन वेब सेवा के साथ संचार शुरू करने के लिए बटन का उपयोग करेगा। – Daivid

+0

आपने पीईक्यूटी + क्यूएमएल का उदाहरण मांगा है। यहां एक सुडोकू गेम का एक लिंक दिया गया है जहां सभी तर्क पायथन में हैं और यूआई क्यूएमएल में है: https://github.com/pkobrien/sudoku-qml –

उत्तर

3

यदि आप बटन का नाम देते हैं, तो आप इसके ऑनक्लिक सिग्नल से कनेक्ट हो सकते हैं, या कस्टम सिग्नल से कनेक्ट कर सकते हैं जो onClicked में निकलता है। उदाहरण:

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

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

} 
} 

बटन और ऑब्जेक्टनाम संपत्ति में सिग्नल नोट करें। तो बस exec से पहले अजगर कोड उदाहरण के लिए हो सकता है:

def myFunction(): 
    print 'handler called' 

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

ध्यान दें कि ऊपर बटन में, onClicked सिर्फ messageRequired संकेत का उत्सर्जन करता है, तो यह कस्टम संकेत ड्रॉप और clicked सीधे से कनेक्ट करने के लिए बेहतर है। onClicked() और clicked से जुड़े किसी भी स्लॉट को कॉल बटन पर कॉल करने पर कॉल किया जाएगा।

+0

पुराना उदाहरण काम नहीं करता था। पीईक्यूटी 5 में QDeclarativeView क्लास नहीं है, जैसा कि कहा गया है [यहां] (http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html); आखिरकार, मैं डेमो में जो करने की कोशिश कर रहा हूं उसके समान कुछ भी नहीं मिला। Traceback (सबसे हाल कॉल पिछले): – Daivid

+0

उदाहरण – Schollii

+0

सभी मुझे मिल गया है के साथ अपडेट किया "। \ Main.py" फ़ाइल, लाइन 29, win.myButton.messageRequired.connect (myfunction) AttributeError में: 'QWindow 'ऑब्जेक्ट में कोई विशेषता नहीं है' myButton ' – Daivid

संबंधित मुद्दे