2011-12-25 15 views
9

olarak uygulayarak Qt ve GUI programlamalarında yeniyim, fakat python yazma modüllerinde ve benzeri kodlarda biraz kodlama yaptım. Bazı eski modüllerim için basit GUI geliştirmem gerekiyor. i Aşağıdaki basit örnek ile temsil edilebilir yapmaya çalışıyorum nepython işlevlerini doğrudan Qt tasarımcısına

i iki x ve y için hat-düzenlemeleri ve z için bir tane verecek bu işlev için

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

. Şimdi bir 'hesapla' butonu yaratıyorum ve bunu yaptığımda x ve y satırlarını düzenlemeyi istiyorum. f(x,y) fonksiyonunu çalıştır ve çıkışı z'ye ver.

Python'da yazılmış f(x,y) işlevini ekleyerek bunu doğrudan Qt Tasarımcısı'nda yapmak için herhangi bir yolu var mı?

Alternatifler ne değilse?

cevap

16

bir PyQt4 GUI yazma temel iş akışı geçerli:

  1. Tasarım Qt Designer kullanarak UI.
  2. pyuic4 kullanarak UI dosyasından bir Python modülü oluşturun.
  3. Ana program mantığı için bir Uygulama modülü oluşturun.
  4. GUI sınıfını Uygulama modülüne aktarın.
  5. GUI'yi program mantığına bağlayın.

Yani, UI dosya calc.ui verilen sizinle UI modülü oluşturabilir:

pyuic4 -w calc.ui > calc_ui.py 

Ve sonra bir böyle bir uygulama modülü şey yaratmak: o yardımcı olduğunu

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_()) 

Not Tasarımcının Mülk Düzenleyicisindeki her widget için objectName'u ayarlamak ve daha sonra kolayca tanımlanabilmeleri için. Özellikle, ana formun objectName, içe aktarılan GUI sınıfının sınıf adı olacaktır (pyuic4 için "-w" işaretinin kullanıldığı varsayılmaktadır).

+1

aşağıdaki hatayı verir: hata ayıklama programı, işlenmemiş istisnayı kaldırdı AttributeError "'Hesap Makinesi' nesnesinin 'buttonCalc' özelliğine sahip değil. Neyin yanlış gitti? Düğme nesnesini Qt Designer – linuS

+1

içinde buttonCalc olarak adlandırdım. Yeniden çalıştırdığınızdan emin olun. 'pyuic4', ui dosyanızdaki değişiklikleri kaydettiğiniz her seferinde bu düzeltmezse, [bu kullanıcı adı] 'nı (http://pastebin.com/Ciu8p4ry), cevabımdaki komut dosyasıyla çalışan bir örnek olarak deneyin. – ekhumoro

+0

tekrar aynı sorun.Yani ben Eric IDE kullanıyorum – linuS