我正在通过PyQt和Python为数据库做GUI。主窗口(类窗口)有一个列表框,我放置了所有数据,对于这个例子我放了"程序正在运行"。此外,另一个窗口(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_())
答案 0 :(得分:0)
你的错误是代码没有在任何地方实例化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()