2

PyQt4の使い方を学び始めています。表示したいシンプルなGUIウィンドウがあります(派手なものはありません)。

そのためのコードは次のとおりです。

import sys
from PyQt4 import QtGui
from test import Ui_MainWindow

class MyForm(QtGui.QMainWindow):
   def __init__(self, parent=None):
       QtGui.QWidget.__init__(self, parent)
       self.ui = Ui_MainWindow
       self.ui.setupUi(self)          

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())

しかし、日食は私に次のエラーを与えています:

TypeError: unbound method setupUi() must be called with Ui_MainWindow instance
as first argument (got MyForm instance instead)

助言がありますか?

4

2 に答える 2

3

継承する必要がありますUi_MainWindow

import sys
from PyQt4 import QtGui
from test import Ui_MainWindow

class MyForm(QtGui.QMainWindow, Ui_MainWindow):
   def __init__(self, parent=None):
       QtGui.QWidget.__init__(self, parent)
       self.setupUi(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())

Ui_MainWindowまたは、インスタンスを作成できます。

import sys
from PyQt4 import QtGui
from test import Ui_MainWindow

class MyForm(QtGui.QMainWindow):
   def __init__(self, parent=None):
       QtGui.QWidget.__init__(self, parent)
       self.ui = Ui_MainWindow()    #note: instance, not the class
       self.ui.setupUi(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())
于 2012-09-05T08:28:32.653 に答える
0

@Bakuriuが言ったように、あなたは欲しい

self.ui = Ui_MainWindow()

、 いいえ

self.ui = Ui_MainWindow

. 現在、クラスのインスタンスを作成するのではなく、クラス自体を self.ui に割り当てています。したがって、呼び出しはメンバーに「バインド」されていませんが、バインドされていません (クラス全体を操作しようとします)。

于 2012-09-05T08:31:24.990 に答える