繁体   English   中英

如何在Qt Designer中将功能连接到Qt小部件? -蟒蛇

[英]how to connect function to qt widget in qt designer? - python

我是python和pyqt的新手。

我为大型应用创建了小型应用,以便通过控制台进行锻炼。 现在,我尝试运行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,如下所示: 在此处输入图片说明

我的问题是如何将我的功能连接到标签并计算按钮? TNX

首先,您需要保存表单并将其转换为python模块。 您可以使用pyuic工具执行此操作:

    pyuic4 -o form_ui.py form.ui

接下来,您需要创建一个脚本,该脚本将导入form_ui模块并将您的应用程序逻辑连接到GUI。 Window类的基类必须与Qt Designer中的顶级小部件(即QWidgetQMainWindowQDialog )相同。 还要注意,来自Qt Designer的小部件将成为__init__方法中创建的ui对象的属性。 显然,您需要更改我在示例中使用的名称,以匹配您实际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_())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM