用pyqt从另一个类修改列表框
我正在用PyQt和Python为一个数据库做图形界面(GUI)。主窗口(Window类)里有一个列表框,我把所有数据放在里面,这个例子里我放了“程序正在运行”。另外,还有一个窗口(AddWin类)帮助我往数据库里添加新客户,但我无法从AddWin类修改列表框。我在程序里有以下代码,我想从AddWin类清空列表框,你能帮我吗?或者我在下面的代码中有什么错误吗?
class Window(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
#Listbox
self.lista = QtGui.QListWidget(self)
self.lista.move(155,221)
self.lista.resize(855,455)
self.lista.addItem("The program is working")
class AddWin(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
main = Window()
main.lista.clear()
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
1 个回答
1
你的错误在于,代码中没有创建 AddWin
的实例,所以 lista.clear 这个方法从来没有被调用过。
你可以通过把
window = Window()
改成
window = AddWin()
最后编辑于 2014年8月21日 12:42
如果你想把 QtGui.QListWidget
从 QtGui.QMainWindow
传递到 QtGui.QDialog
,你可以通过引用的方式将值传递给 QtGui.QDialog
。
假设你的 QtGui.QMainWindow
必须包含 QtGui.QDialog
(或者 AddWin
);
class Window(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
#Listbox
self.lista = QtGui.QListWidget(self)
self.lista.move(155,221)
self.lista.resize(855,455)
self.lista.addItem("The program is working")
self.myAddWin = AddWin(self.lista, self) # <- Pass QListWidget to your class
class AddWin(QtGui.QDialog):
def __init__(self, refQListWidget, parent=None):
QtGui.QDialog.__init__(self, parent)
self.myRefQListWidget = refQListWidget
self.myRefQListWidget.clear()