2014-03-26 3 views
2

저는 python과 pyqt에서 새로운 사람입니다.qt 디자이너에서 qt 위젯에 함수를 연결하는 방법은 무엇입니까? - python

운동으로 큰 숫자를 곱하기 위해 작은 앱을 만듭니다. 지금은 GUI 응용 프로그램에 실행하려고 해요. 내가 기능을 내 응용 프로그램을 만들고, 내 코드는 다음과 같습니다

def digit(n): 
     len(str(n)) 

def multi(u,v): 
     n = max(digit(u),digit(v)) 

     if (u==0) or (v==0): 
       return 0 
     elif n < 4: 
       return u*v 
     else: 
       m = int(n/2) 

       x = u/10**m 
       y = u%10**m 

       w = v/10**m 
       z = v%10**m 

       return (multi(x,w)*(10**m * 10**m) + (multi(x,z)+multi(w,y))*(10**m) + multi(y,z)) 

나는 qtDesigner이 같은 몇 가지 UI를 설계 : enter image description here

내 질문에 내가 어떻게 레이블에 내 기능을 연결하고 버튼을 계산할 수있다? tnx

답변

2

먼저 양식을 저장하고 파이썬 모듈로 변환해야합니다. 당신은 pyuic 도구를 사용하여이 작업을 수행 할 수 있습니다

pyuic4 -o form_ui.py form.ui 

다음, 당신은 form_ui 모듈을 가져 와서 GUI에 응용 프로그램 논리를 연결하는 스크립트를 작성해야합니다. Window 클래스의 기본 클래스는 Qt 디자이너의 최상위 위젯과 동일해야합니다 (예 : QWidget, QMainWindow 또는 QDialog). 또한 Qt Designer의 위젯은 __init__ 메서드로 만든 ui 객체의 속성이됩니다. Obvioulsy, 당신은 당신의 실제 UI와 일치하도록 예제에서 사용한 이름을 변경해야합니다. 오히려 pyuic4````사용하는 것보다

from PyQt4 import QtCore, QtGui 
from form_ui import Ui_Form 

def digit(n): 
    len(str(n)) 

def multi(u,v): 
    n = max(digit(u),digit(v)) 

    if (u==0) or (v==0): 
     return 0 
    elif n < 4: 
     return u*v 
    else: 
     m = int(n/2) 

     x = u/10**m 
     y = u%10**m 

     w = v/10**m 
     z = v%10**m 

     return (multi(x,w)*(10**m * 10**m) + (multi(x,z)+multi(w,y))*(10**m) + multi(y,z))  

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.ui = Ui_Form() 
     self.ui.setupUi(self) 
     self.ui.calcButton.clicked.connect(self.handleCalculate) 

    def handleCalculate(self): 
     u = int(str(self.ui.lineEdit1.text())) 
     v = int(str(self.ui.lineEdit2.text())) 
     # calculate answer... 
     self.ui.label.setText(str(answer)) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 
+0

, 당신은 예제 http://www.riverbankcomputing.com/pipermail/pyqt/2007-April/015902.html를 참조 런타임에 직접 .ui 파일을로드 할 수 있습니다 . – doshea

관련 문제