为什么不附加列表而是覆盖列表?
Why is the list not appended but overwritten instead?
我用 PyQt4 创建了一个布局。
我想用在 QLineEdit (lineNetworkId) 和 (lineMask) 字段中输入的网络更新我的 QListView。
但我也想要一个更新的列表,其中包括所有这些输入的网络以供进一步配置。
我的 QListView 在单击 addButton 后在 GUI 中显示了网络,这是有效的,但我的附加列表 (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>
每次单击按钮时都会调用函数 addItem:
self.addButton.clicked.connect(System.addItem)
没关系,但每次调用函数时,您都在定义一个空列表:bgp = []
def addItem(self):
networks = {}
bgp = []
你应该在函数 addItem(self) 之外定义你的 bgp,比如:
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)
我用 PyQt4 创建了一个布局。 我想用在 QLineEdit (lineNetworkId) 和 (lineMask) 字段中输入的网络更新我的 QListView。
但我也想要一个更新的列表,其中包括所有这些输入的网络以供进一步配置。
我的 QListView 在单击 addButton 后在 GUI 中显示了网络,这是有效的,但我的附加列表 (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>
每次单击按钮时都会调用函数 addItem:
self.addButton.clicked.connect(System.addItem)
没关系,但每次调用函数时,您都在定义一个空列表:bgp = []
def addItem(self):
networks = {}
bgp = []
你应该在函数 addItem(self) 之外定义你的 bgp,比如:
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)