gpt4 book ai didi

python - 我无法访问我类(class)的属性?

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:28 56 4
gpt4 key购买 nike

我正在使用 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 的地方。

  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”给出的答案编辑代码后: Ui_MainWindow 类(对象): def init(self,mainwindow): self.setupUi(主窗口) 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'

谁能帮帮我。

提前致谢

最佳答案

该评论说明了您的问题。您需要向调用 self.setupUi()Ui_MainWindow 类添加一个 __init__() 方法,以便您的 setupUi 中的所有内容() 在您调用 super() 时立即被调用。

编辑:所以现在你稍微改变了你的代码并且你得到了 __init__() takes two arguments 错误,我环顾四周,看到你的内联代码表明你需要通过您的 Ui_MainWindow.__init__(self, MainWindow)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)。另外,您将自身的一个实例作为参数传递给自身。

关于python - 我无法访问我类(class)的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060820/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com