我正在学习PyQt中的选项卡视图和MDI。我不知道如何引用某个选项卡上的行编辑小部件。当我查看对象检查器时,我看到:
MainWindow
centralwidget
mdiArea
subwindow
gridlayout
wt1
我希望在代码中引用wt1
。我该怎么做?你知道吗
我得到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\218003107\AppData\Local\Continuum\Anaconda\lib\site- packages\spyderlib\widgets\externalshell\sitecustomize.py", line 580, in runfile
execfile(filename, namespace)
File "C:/Users/218003107/callphreeqcInput.pyw", line 38, in <module>
myapp=MyForm()
File "C:/Users/218003107/callphreeqcInput.pyw", line 10, in __init__
self.connect(self.ui.wt1,QtCore.SIGNAL('textChanged()'),self.wtResult)
AttributeError: 'Ui_MainWindow' object has no attribute 'wt1'
我的代码如下所示:
import sys
from PyQt4 import QtCore, QtGui
from phreqMDI import Ui_MainWindow
class MyForm(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyForm,self).__init__(parent)
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.connect(self.ui.wt1,QtCore.SIGNAL('textChanged()'),self.wtResult)
self.connect(self.ui.wt2,QtCore.SIGNAL('textChanged()'),self.wtResult)
self.connect(self.ui.wt3,QtCore.SIGNAL('textChanged()'),self.wtResult)
self.connect(self.ui.wt4,QtCore.SIGNAL('textChanged()'),self.wtResult)
def wtResult(self):
if len(self.ui.wt1.text())!=0:
a=float(self.ui.wt1.text())
else:
a=0
if len(self.ui.wt2.text())!=0:
b=float(self.ui.wt2.text())
else:
b=0
if len(self.ui.wt3.text())!=0:
c=float(self.ui.wt3.text())
else:
c=0
if len(self.ui.wt4.text())!=0:
c=float(self.ui.wt4.text())
else:
d=0
sum=a+b+c+d
self.ui.wt_total.setText(str(sum))
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp=MyForm()
myapp.show()
app.exec_()
问题是
pyuic
不会自动将子窗口添加到mdi区域。这对我来说似乎是个bug,但我自己从来没有使用过mdi区域,所以可能我遗漏了一些东西。你知道吗无论如何,您可以通过自己添加子窗口来解决此问题,如下所示:
有关详细信息,请参见QMdiArea docs。你知道吗
更新:
信号连接不起作用的原因是您使用了错误的签名。在使用连接信号的old-style method时,这是一个非常常见的错误,因此我建议切换到new-style method,如下所示:
注意,我在这里使用了editingFinished信号,因此只计算完整的条目。如果您使用
textChanged
信号,wtResult
方法将尝试计算中间条目(例如"2."
),这将产生错误。你知道吗您可能应该考虑输入字段上的setting a validator,以便只能输入数值。你知道吗
相关问题 更多 >
编程相关推荐