2012-06-16 57 views
1

我使用PyQt4模塊創建用戶界面。這個問題我'面對的是,我不能夠訪問「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被intialized。

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' 

規格的錯誤: IM使用python 2.7和PyQt4的模塊。

根據由 「notbad JPEG」 中給出的的answere編輯代碼之後: 類Ui_MainWindow(對象): DEF 初始化(個體,主窗口): self.setupUi(主窗口) DEF setupUi(個體,主窗口):

這是給我一個問題:

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' 

請問誰能幫我。

Thanx提前

+3

是否存在'Ui_MainWindow。__init __()'調用'setupUi()'? Blkknght:不,它不,Thanx注意。 – Blckknght

+0

我改了一下代碼,現在我的Ui_MainWindow – TheCreator232

+0

@ thecreator232上有一個__init__,你能更新代碼來反映你的改變嗎? – Andy

回答

4

該評論是陳述你的問題。您需要在撥打self.setupUi()Ui_MainWindow班級中添加一個__init__()方法,以便在撥打super()時立即致電中的所有內容。

編輯:所以,現在你改變了你的代碼了一下,你得到的__init__()有兩個參數錯誤,我環顧四周,看到你的內嵌代碼,顯示你需要一個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) 

Ui_MainWindow.__init__()的電話是多餘的,因爲當你創建和類的實例它就會自動調用:self.MainWindow=Ui_MainWindow(self.window)。另外,你將自己的一個實例作爲參數傳遞給它自己。

+0

好吧,我做了你告訴我在我的Ui_MainWindow中創建了__init__,但它仍然顯示相同的問題。 當我把一個Ui_MainWindow .__ init __(),在我的add_to類。 它要求一個Ui_MainWindow的實例 請幫助 – TheCreator232

+0

這是真的,但我無法找到它的解決方案。 – TheCreator232

+0

你能告訴我怎樣才能克服這個問題。 預先感謝你 – TheCreator232