2017-07-20 12 views
0

私はPYQT4を使い始めました。私はQTDesingnerでファイルtest.uiを生成し、test.pyにそれを翻訳:setupUi()は2つの引数をとります(1が指定されています)

from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName(_fromUtf8("Dialog")) 
     Dialog.resize(400, 300) 
     self.pushButton = QtGui.QPushButton(Dialog) 
     self.pushButton.setGeometry(QtCore.QRect(280, 30, 75, 23)) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     self.lineEdit = QtGui.QLineEdit(Dialog) 
     self.lineEdit.setGeometry(QtCore.QRect(110, 30, 113, 20)) 
     self.lineEdit.setObjectName(_fromUtf8("lineEdit")) 

     self.retranslateUi(Dialog) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def retranslateUi(self, Dialog): 
     Dialog.setWindowTitle(_translate("Dialog", "Dialog", None)) 
     self.pushButton.setText(_translate("Dialog", "Start", None)) 

main.py:

:main.pyを実行した後、私はエラーを得た

from PyQt4 import QtCore, QtGui 
import test, sys 


app = QtGui.QApplication(sys.argv) 
window = QtGui.QWidget() 
ui = test.Ui_Dialog 
ui.setupUi(window) 

QtCore.QObject.connect(ui.pushButton, QtCore.SIGNAL("click()"), lambda: test(ui)) 


def test(ui): 
    print(ui.lineEdit.text()) 

TypeError:2つの引数(1が指定されている)を正確に取る。

ありがとうございます!

答えて

1

ここでの問題は、関数を静的に呼び出して、インスタンス関数に必要な 'self'引数を渡さないことです。

問題はここにある:

ui = test.Ui_Dialog() 
ui.setupUi(window) 

は、オブジェクトのインスタンスを作成して、暗黙的に

を '自己' 変数を渡します:

ui = test.Ui_Dialog 
ui.setupUi(window) 

はこれをやって

関連する問題