ファイルに 2 つのクラスがあります。
メイン クラスには、そのクラスの UI 要素を更新するメソッドがあります。別のクラスのインスタンスを作成します。
インスタンス化された別のクラスからメインクラスの UI を更新したい。
class Add(QtGui.QMainWindow,Ui_AddShotDetails):
def __init__(self):
super(Add,self).__init__()
self.setupUi(self)
def addDetails(self):
#Do some stuff and call method in Manager class
Manager.EpiChange() # I get the error at this line
class Manager(QtGui.QMainWindow,Ui_ShotManager):
def __init__(self):
super(Manager,self).__init__()
self.setupUi(self)
self.AddWindow = Add()
def EpiChange(self):
Manager.EpiCode = str(self.cmb_Epi.currentText())
# Update ui elements
def addShot(self):
self.AddWindow.show()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
win = Manager()
win.show()
sys.exit(app.exec_())
次のトレースバックを取得します
Traceback (most recent call last):
File "D:\Manager.py", line 18, in addDetails
Manager.EpiChange()
TypeError: unbound method EpiChange() must be called with Manager instance as first argument (got nothing instead)
このメソッドをクラスメソッドとして作成しようとしましたが、これを@classmethod
使用するとトレースバックを下回ります
Traceback (most recent call last):
File "D:\Manager.py", line 27, in EpiChange
Manager.EpiCode = str(self.cmb_Epi.currentText())
AttributeError: type object 'Manager' has no attribute 'cmb_Epi'