2017-08-05 83 views
-1

我想运行一个简单的PyQT4应用程序。我已经安装了Python3.4和PyQt4。我测试过一个简单的“Hello World”应用程序,并且都运行良好。然而,当试图编写一个简单的税务计算器应用程序时,我遇到了一个“意外类型”方法“错误。不知道我做错了什么。这里是我的Python代码:PyQt4错误:意外的类型'方法'

import sys 
from PyQt4 import QtCore, QtGui, uic 

qtCreatorFile = 'tax.ui' # Enter file here. 

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) 

class MyApp(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     Ui_MainWindow.__init__(self) 
     self.setupUi(self) 
     self.calcTax.connect(self.CalculateTax) 

    def CalculateTax(self): 
     price = int(self.priceBox.toPlainText()) 
     tax = (self.taxRate.value()) 
     total_price = price + ((tax/100) * price) 
     total_price_string = 'The total price with tax is: ' + str(total_price) 
     self.resultBox.setText(total_price_string) 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    window = MyApp() 
    window.show() 
    sys.exit(app.exec_()) 

,这里是在执行的时候返回的完整错误消息:

Traceback (most recent call last): 
    File "tax.py", line 24, in <module> 
    window = tax() 
    File "tax.py", line 13, in __init__ 
    self.calcTax.connect(self.CalculateTax) 
TypeError: arguments did not match any overloaded call: 
    QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'method' 
    QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'method' 
    QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'method' 

会很感激的任何帮助

+1

什么是'calcTax'? – eyllanesc

+1

'self.calcTax.clicked.connect(self.CalculateTax)'。 – ekhumoro

回答

0

new connection style的语法如下:

self.calcTax.some_signal.connect(self.CalculateTax) 

例如,如果self.calcTax是一个按钮,并且您想要执行f当你按下该按钮时,你应该输入以下内容:

self.calcTax.clicked.connect(self.CalculateTax) 
+0

谢谢!似乎工作^ _ ^ – Setzor