【发布时间】:2018-03-05 21:42:40
【问题描述】:
我正在尝试使用此 for 循环自动生成我的菜单:
q3 = connect_menu.addMenu('Q3')
q3menus = {}
x = 0
for element in q3s:
key = 'Q'+str(x)
q3menus[key] = QAction(element[7], self)
q3.addAction(q3menus[key])
q3menus[key].triggered.connect(lambda: self.main_form.consavesv(q3menus[key].text()))
x += 1
q3s 等于一个 Fetchall 函数,从上一个 SQL Query 中获取数据
q3s = [(1, 'Q3', '127.0.0.1', 28960, "Server Test Name", '5154', '127.0.0.1:28960', "127.0.0.1:28960 | Server Test Name"), (2, 'Q3', '192.168.1.66', 28960, 'Server Test 2', '5154', '192.168.1.66:28960', '192.168.1.66:28960 | Server Test 2')]
我尝试使用字典,该字典添加了菜单标签,但当我单击它们时,它们都具有与上一个相同的triggered.connect()..
我做错了什么?
我不想在这里自己创建信号,因为数据库结果不是静态的。
【问题讨论】:
-
我想我应该在循环之外添加
triggered.connect(),但我不知道应该如何为字典中的所有项目设置triggered.connect() -
你可以在运行
print(q3s)时显示你得到的结果 -
@eyllanesc 问题已更新并添加了 q3s 内容
标签: python python-3.x sqlite pyqt pyqt5