如何将函数连接到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的一些事情是这样的:
我的问题是如何将我的功能连接到标签,并计算按钮? tnx
答
首先,您需要保存表单并将其转换为python模块。您可以使用pyuic
工具做到这一点:
pyuic4 -o form_ui.py form.ui
接下来,你需要创建一个脚本,将导入form_ui
模块和应用程序逻辑连接到GUI。 Window
类的基类必须与Qt Designer的顶级小部件(即QWidget
,QMainWindow
或QDialog
)相同。另外请注意,来自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_())
而不是使用''pyuic4'',你可以在运行时直接加载的.ui文件,请参阅http://www.riverbankcomputing.com/pipermail/pyqt/2007-April/015902.html的例子。 – doshea