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_())
我有两种形式(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 classmainF = 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_())