1

PyQt4 module を使用してユーザー インターフェイスを作成しています。私が直面している問題は、「self.ftp_tableWidget」変数にアクセスできないことです

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
    MainWindow.setObjectName(_fromUtf8("MainWindow"))
    MainWindow.resize(790, 610)
    self.FTP = QtGui.QWidget()
    self.FTP.setObjectName(_fromUtf8("FTP"))
    self.ftp_tableWidget = QtGui.QTableWidget(self.FTP)
    self.ftp_tableWidget.setGeometry(QtCore.QRect(40, 90, 411, 192))
    self.ftp_tableWidget.setMinimumSize(QtCore.QSize(331, 0))
    self.ftp_tableWidget.setObjectName(_fromUtf8("ftp_tableWidget"))
    self.ftp_tableWidget.setColumnCount(2)
    self.ftp_tableWidget.setRowCount(31)
    item = QtGui.QTableWidgetItem()
    self.ftp_tableWidget.setHorizontalHeaderItem(0, item)
    item = QtGui.QTableWidgetItem()
    self.ftp_tableWidget.setHorizontalHeaderItem(1, item)
    self.update_table()

ここで ftp_tableWidget が初期化されます。

  def update_table(self):
    cursor.execute('''SELECT MAX(SNO) FROM ftp_auth_table1''')
    entry=cursor.fetchall()
    entry=entry[0]
    count=entry[0]
    self.ftp_tableWidget.setRowCount(count)
    cursor.execute('''SELECT * FROM ftp_auth_table1''')
    entry=cursor.fetchall()

これは、テーブル ウィジェットを更新するコードです。

 def adding(self):
    self.msg=add_to()
    self.msg.show()

このコードは、データベースにデータを追加するクラスを呼び出しています。

class add_to(QtGui.QDialog,Ui_MainWindow):
def __init__(self):
    super(add_to,self).__init__()
    Ui_MainWindow.__init__(self)

このコードは、データをデータベースに追加するクラスを初期化し、update_table 関数を呼び出してテーブル ウィジェットを更新します。

これは私が得ているエラーです

    self.ftp_tableWidget.setRowCount(count)
    AttributeError: 'add_to' object has no attribute 'ftp_tableWidget'  

仕様:Python 2.7とPyQt4モジュールを使用しています。

「notbad jpeg」で与えられた回答に従ってコードを編集した後: class Ui_MainWindow(object): def init (self,mainwindow): self.setupUi(mainwindow) def setupUi(self, MainWindow):

これは私に問題を与えています:

class add_to(QtGui.QDialog,Ui_MainWindow):
   def __init__(self):
    super(add_to,self).__init__()
    self.window=QtGui.QMainWindow()
    self.MainWindow=Ui_MainWindow(self.window)
    Ui_MainWindow.__init__(self,self.MainWindow)

これはエラーになります:

MainWindow.setObjectName(_fromUtf8("MainWindow"))
AttributeError: 'Ui_MainWindow' object has no attribute 'setObjectName'

Pls は誰でも私を助けることができます。

事前にサンクス

4

1 に答える 1

4

そのコメントはあなたの問題を述べています。を呼び出すとすぐにすべてが呼び出されるように、クラスに__init__()メソッドを追加する必要があります。Ui_MainWindowself.setupUi()setupUi()super()

編集:コードを少し変更し、__init__()2 つの引数を取るエラーが発生したので、周りを見回して、にMainWindow引数を渡す必要があることを示すインライン コードを見ましたUi_MainWindow.__init__(self, MainWindow)。そして、それMainWindowをメソッドに渡しますsetupUi

編集#2:変更

class add_to(QtGui.QDialog,Ui_MainWindow):
   def __init__(self):
       super(add_to,self).__init__()
       self.window=QtGui.QMainWindow()
       self.MainWindow=Ui_MainWindow(self.window)
       Ui_MainWindow.__init__(self,self.MainWindow)

に...

class add_to(QtGui.QDialog,Ui_MainWindow):
   def __init__(self):
       super(add_to,self).__init__()
       self.window=QtGui.QMainWindow()
       self.MainWindow=Ui_MainWindow(self.window)

class: のインスタンスを作成すると自動的に呼び出されるため、への呼び出しUi_MainWindow.__init__()は冗長でしたself.MainWindow=Ui_MainWindow(self.window)。さらに、それ自体のインスタンスを引数としてそれ自体に渡していました。

于 2012-06-16T05:42:17.813 に答える