使用pyqt修改另一个类的列表框

时间:2014-08-20 17:22:23

标签: python pyqt qlistwidget

我正在通过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_())

1 个答案:

答案 0 :(得分:0)

你的错误是代码没有在任何地方实例化AddWin,所以从不调用lista.clear。

您可以通过更改

进行测试
window = Window()

window = AddWin()

上次编辑2014年8月21日12:42

如果您想将QtGui.QListWidgetQtGui.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()