python pyqt4 从另一个 class 添加项目到 Qlist

python pyqt4 add item to the Qlist from another class

我有两种形式(form1.ui & form2.ui)。 form1 包含一个产品列表和一个新产品按钮。新产品按钮打开一个新的 form2,它有一个编辑行和一个插入按钮。插入按钮调用另一个 class(AllMethods class) 的方法,该方法将编辑行内容的内容插入到 form1 中的列表中..... 错误是 allmethod 实例没有属性 itemlist(Qlist 的名称)

import sys
from PyQt4 import QtGui, uic 

class AllMethods:

    def addListMethod(self,itm):
        itemList.addItem(itm)

#_________FORM2____________
class Form2(QtGui.QMainWindow):
    def __init__(self):
        super(Form2,self).__init__()
        uic.loadUi('Form2.ui',self)
        self.show()

        self.insertItem.clicked.connect(self.insertItem_clicked)

    def insertItem_clicked(self):
        obj = AllMethods()
        obj.addListMethod(self.itemname.text())

#_________FORM1____________
class Form1(QtGui.QMainWindow):
    def __init__(self):
        super(Form1,self).__init__()
        uic.loadUi('Form1.ui',self)
        self.show()

        self.newItem.clicked.connect(self.newItem_clicked)


    def newItem_clicked(self):
        self.form_second = Form2()
        self.form_second.show()

#_________________MAIN____________________  
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = Form1()
    sys.exit(app.exec_())

我试过像

一样调用 Form1 class
mainF = Form1()
mainF.itemlist.addItem(itm)

但是另一个 form1 弹出并在一秒钟内消失,打开的 form1 仍然是空的。

实际上这是在我的主程序中说明我的问题的小程序。

谢谢@mikuszefski 仅使用 form1、form2 的两个 classes(form2 方法将项目添加到 form1 中的列表)

import sys
from PyQt4 import QtGui, uic 

#_________FORM2____________
class Form2(QtGui.QMainWindow):
    def __init__(self,parent):
        super(Form2,self).__init__(parent)
        uic.loadUi('Form2.ui',self)
        self.show()

        self.parent = parent
        self.insertItem.clicked.connect(self.insertItem_clicked)

    def insertItem_clicked(self):   
        self.parent.itemList.addItem(self.itemname.text())

#_________FORM1____________
class Form1(QtGui.QMainWindow):
    def __init__(self):
        super(Form1,self).__init__()
        uic.loadUi('Form1.ui',self)
        self.show()

        self.newItem.clicked.connect(self.newItem_clicked)


    def newItem_clicked(self):
        self.form_second = Form2(self)
        self.form_second.show()

#_________________MAIN____________________  
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = Form1()
    sys.exit(app.exec_())

使用 form1、form2、AllMethods 的三个 class(form2 调用 AllMethods 中的方法 class 并插入到 form1 中的列表)

import sys
from PyQt4 import QtGui, uic 

class AllMethods:

    def __init__(self,parent):
        self.parent = parent

    def addListMethod(self,itm):
        self.parent.itemList.addItem(itm)


#_________FORM2____________
class Form2(QtGui.QMainWindow):
    def __init__(self,parent):
        super(Form2,self).__init__(parent)
        uic.loadUi('Form2.ui',self)
        self.show()

        self.parent = parent
        self.insertItem.clicked.connect(self.insertItem_clicked)

    def insertItem_clicked(self):
        obj = AllMethods(self.parent)
        obj.addListMethod(self.itemname.text())

#_________FORM1____________
class Form1(QtGui.QMainWindow):
    def __init__(self):
        super(Form1,self).__init__()
        uic.loadUi('Form1.ui',self)
        self.show()

        self.newItem.clicked.connect(self.newItem_clicked)


    def newItem_clicked(self):
        self.form_second = Form2(self)
        self.form_second.show()

#_________________MAIN____________________  
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = Form1()
    sys.exit(app.exec_())