2011-12-25 16 views
9

सिग्नल के रूप में सीधे पायथन कार्यों को लागू करने वाले पायथन फ़ंक्शंस को लागू करते हुए मैं क्यूटी और जीयूआई प्रोग्रामिंग के लिए नया हूं लेकिन मैंने पाइथन - मॉड्यूल लिखने और अन्य में कोडिंग का एक उचित बिट किया है। मुझे अपने कुछ पुराने मॉड्यूल के लिए सरल जीयूआई विकसित करने की जरूरत है।सिग्नल

मुझे क्या करना निम्नलिखित सरल उदाहरण द्वारा दर्शाया जा सकता कोशिश कर रहा हूँ क्या:

def f(x, y): 
    z = x + y 
    return z 

इस समारोह मैं x और y के लिए दो लाइन संपादन और z के लिए एक दे देंगे के लिए। अब मैं पुश-बटन 'गणना' बनाता हूं और जब मैं ऐसा करता हूं तो मैं चाहता हूं कि मैं लाइन-एडिट से एक्स और वाई लेना चाहता हूं, f(x,y) फ़ंक्शन चलाएं और आउटपुट को z पर दें।

क्या पाइथन में लिखे गए f(x,y) फ़ंक्शन को जोड़कर सीधे क्यूटी डिजाइनर में ऐसा करने का कोई तरीका है?

यदि विकल्प नहीं हैं तो क्या?

उत्तर

16

बुनियादी कार्यप्रवाह जब एक PyQt4 जीयूआई लेखन है:

  1. डिजाइन यूआई क्यूटी डिजाइनर का उपयोग कर।
  2. pyuic4 का उपयोग कर UI फ़ाइल से एक पायथन मॉड्यूल जेनरेट करें।
  3. मुख्य प्रोग्राम तर्क के लिए एक अनुप्रयोग मॉड्यूल बनाएँ।
  4. एप्लिकेशन मॉड्यूल में जीयूआई कक्षा आयात करें।
  5. प्रोग्राम तर्क में जीयूआई कनेक्ट करें।

तो, यूआई फ़ाइल calc.ui दिया, आप के साथ यूआई मॉड्यूल उत्पन्न कर सकता है:

pyuic4 -w calc.ui > calc_ui.py 

और फिर इस तरह एक आवेदन मॉड्यूल कुछ बनाना:

from PyQt4 import QtGui, QtCore 
from calc_ui import CalculatorUI 

class Calculator(CalculatorUI): 
    def __init__(self): 
     CalculatorUI.__init__(self) 
     self.buttonCalc.clicked.connect(self.handleCalculate) 

    def handleCalculate(self): 
     x = int(self.lineEditX.text()) 
     y = int(self.lineEditY.text()) 
     self.lineEditZ.setText(str(x + y)) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Calculator() 
    window.show() 
    sys.exit(app.exec_()) 

ध्यान दें कि यह मदद करता है डिजाइनर के प्रॉपर्टी एडिटर में प्रत्येक विजेट के लिए objectName सेट करने के लिए ताकि उन्हें आसानी से बाद में पहचाना जा सके। विशेष रूप से, मुख्य फॉर्म का objectName आयातित जीयूआई वर्ग का वर्ग-नाम बन जाएगा ("-w" ध्वज को pyuic4 पर उपयोग किया जाता है)।

+1

यह निम्नलिखित त्रुटि देता है: डीबग किए गए प्रोग्राम ने अपवाद को अपरिवर्तित किया है विशेषताएँ '' कैलक्यूलेटर 'ऑब्जेक्ट में कोई विशेषता नहीं है' बटन कैलक '। क्या गलत हो गया है? मैंने बटन ऑब्जेक्ट को क्यूटी डिजाइनर – linuS

+1

में बटनकैल्क के रूप में नामित किया है सुनिश्चित करें कि आप फिर से चलें 'pyuic4' हर बार जब आप अपनी UI फ़ाइल में परिवर्तनों को सहेजते हैं। अगर यह ठीक नहीं होता है, तो [this ui फ़ाइल] (http://pastebin.com/Ciu8p4ry) को एक उदाहरण के रूप में आजमाएं जो मेरे उत्तर में लिपि के साथ काम करता है। – ekhumoro

+0

फिर से वही समस्या। जिस तरह से मैं एरिक आईडीई का उपयोग कर रहा हूं। – linuS

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