PyQT - 创建大量动作列表

时间:2011-06-09 02:12:25

标签: python loops pyqt

我正在处理一些代码,我需要创建一个与系统上COM端口相对应的QActions列表,这些代码将根据可用的COM端口添加到菜单栏中。看起来有点像这样:

    self.actionCOM1 = QtGui.QAction(QtGui.QIcon(''), 'COM1', self)
    self.actionCOM1.setCheckable(True)
    self.COMPorts.append(self.actionCOM1)e here

如果有一种方法可以让我的生活变得更轻松,所以我不必一遍又一遍地重复这段代码,是否有一些方法可以将循环索引号附加到“self”的末尾.actionCOM“?

2 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

num = 10
for i in range(num):
    setattr(self, "actionCOM%d" % i, QtGui.QAction(QtGui.QIcon(''), "COM%d" % i, self))
    action = getattr(self, "actionCOM%d" % i)
    action.setCheckable(True)
    self.COMPorts.append(action)

答案 1 :(得分:0)

如果它是您的选项,我会考虑为此目的使用字典,而不是在实例上动态创建的attrs。

self.actionCOM = {}
for com_port in list_of_com_ports:
    self.actionCOM[com_port] = QtGui.QAction(QtGui.QIcon(''), 'COM%d'%com_port, self)
    self.actionCOM[com_port].setCheckable(True)