Почему список не добавляется, а перезаписывается? - PullRequest
0 голосов
/ 27 марта 2019

Я создал макет с PyQt4.Я хочу обновить свой QListView сетями, введенными в поля QLineEdit ( lineNetworkId ) и ( lineMask ).

Но также я хочу иметь обновленный список, который включает в себявсе эти введенные сети для дальнейшей конфигурации.

Мой QListView показывает сети в графическом интерфейсе после нажатия на кнопку addButton, которая работает, но мой дополнительный список ( bgp ) перезаписывается каждый раз,

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

        self.addButton.clicked.connect(System.addItem)


class System:

    def addItem(self):
        networks = {}
        bgp = []

        network = ui.lineNetworkId.text()
        mask = ui.lineMask.text()

        networks.update({network:mask})
        ui.listWidget.addItem(str("network {} mask {}".format(network, mask)))
        ui.lineNetworkId.clear()
        ui.lineMask.clear()

        for key, value in networks.items():
            bgp_add = 'network {0} mask {1}'.format(key, value)
            bgp.append(bgp_add)

        bgp_network = '\n  '.join(bgp)

        print(bgp)
        print(networks)
        print(ui.listWidget)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

OUTPUT:
['network 1 mask 1']
{'1': '1'}
<PyQt4.QtGui.QListWidget object at 0x0656C350>
['network 2 mask 2']
{'2': '2'}
<PyQt4.QtGui.QListWidget object at 0x0656C350>

1 Ответ

3 голосов
/ 27 марта 2019

каждый раз, когда нажимается кнопка, вы вызываете функцию addItem:

self.addButton.clicked.connect(System.addItem)

это нормально, но каждый раз, когда вы вызываете функцию, вы определяете пустой список: bgp = []

    def addItem(self):
        networks = {}
        bgp = []

вы должны определить свой bgp из функции addItem (self), например:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.bgp = []
        self.addButton.clicked.connect(System.addItem)

class System:
   def addItem(self):
       ...
       for key, value in networks.items():
           bgp_add = 'network {0} mask {1}'.format(key, value)
           Ui_MainWindow.bgp.append(bgp_add)
...