首页 > 解决方案 > 在pySide2中按下按钮时如何将项目添加到QListWidget?

问题描述

我尝试用谷歌搜索但没有答案,看起来 QListWidget 不是动态模块

这是我的代码:

        listwidget = QtWidgets.QListWidget()
        for a in range (0,3):
            listwidget.addItem(str(a))

        button_layout = QHBoxLayout()
        self.buttfind = QPushButton('Find')
        self.buttfind.clicked.connect(self.find)
        self.buttmerge = QPushButton('Merge')
        self.buttmerge.clicked.connect(self.merge)
        button_layout.addWidget(self.buttfind)
        button_layout.addWidget(self.buttmerge)

        main_layout.addWidget(listwidget)
        main_layout.addLayout(button_layout)
        self.setLayout(main_layout)

    def merge(self):
        print('a')
        listwidget.addItem(str('asd'))


我在以下位置遇到问题:

    def merge(self):
        print('a')
        listwidget.addItem(str('asd'))

错误:listwidget.addItem(str('asd')) NameError: name 'listwidget' is not defined

标签: pythonpyside2

解决方案


listwidget仅具有函数范围,因此变量引用在第一个函数结束时丢失。

更改listwidgetself.listwidget将赋予变量实例范围。


推荐阅读