PyQT - создание большого списка действий - PullRequest
0 голосов
/ 09 июня 2011

Я работаю над кодом, в котором мне нужно создать список QActions, соответствующих COM-портам в системе, который будет добавлен в строку меню в зависимости от того, какие COM-порты доступны. Это выглядит примерно так:

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

Это сделало бы мою жизнь проще, если бы был способ сделать это, поэтому мне не пришлось бы повторять этот блок кода снова и снова, есть ли способ просто добавить индексный номер цикла в конец "self" .actionCOM "?

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Вы имеете в виду что-то подобное?

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)
0 голосов
/ 23 января 2013

Если это вариант для вас, я бы подумал об использовании словаря для этой цели, а не динамически создаваемых атрибутов в экземпляре.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...