如何将函数连接到qt设计器中的qt小部件? - python

问题描述:

我是新的python和pyqt。如何将函数连接到qt设计器中的qt小部件? - python

我为控制台的锻炼创造大数乘法的小应用程序。现在我试着跑进gui app。我创建我的应用程序的功能,我的代码是:

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

首先,您需要保存表单并将其转换为python模块。您可以使用pyuic工具做到这一点:

pyuic4 -o form_ui.py form.ui 

接下来,你需要创建一个脚本,将导入form_ui模块和应用程序逻辑连接到GUI。 Window类的基类必须与Qt Designer的顶级小部件(即QWidget,QMainWindowQDialog)相同。另外请注意,来自Qt Designer的小部件将成为在__init__方法中创建的ui对象的属性。 Obvioulsy,您需要更改我在示例中使用的名称,以匹配实际UI中的名称。

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

而不是使用''pyuic4'',你可以在运行时直接加载的.ui文件,请参阅http://www.riverbankcomputing.com/pipermail/pyqt/20​​07-April/015902.html的例子。 – doshea