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

标签 python qt function pyqt4 qt-designer

我是 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,如下所示:enter image description here .

我的问题是:如何将我的函数连接到标签和计算按钮?

最佳答案

首先,您需要保存表单并将其转换为 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_())

关于python - 如何在qt设计器中将函数连接到qt小部件? - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674824/

相关文章:

python - Python 如何检查一个元素是否存在于列表中?

Python:如何使 Reportlab 移动到 PDF 输出中的下一页

python - TensorFlow Keras 在期望一个预测的同时返回多个预测

c++ - Qt S60 应用程序中的视频?

javascript - for循环中变量名可以由数组值决定吗?

Swift:如何触发Xcode项目中的函数?

python - matplotlib 中的重叠趋势 : every loop gives additional trend

linux - 获取 EGL DRM/KMS 应用程序的屏幕截图

python - Qt/PyQt : How do I use a QMenu as a permanent widget?

Python:在没有Lock机制的情况下通过多线程并发访问一个函数