Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2014 00:17:47

saw_tooth
Зарегистрирован: 2014-09-08
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

И снова PyQt4

Доброго времени суток, подскажите как правильно организовать создание множество кнопок/чек-боксов в PyQt4 с последующим привязыванием к сигналам. Полагаю нужно использовать лямбда-функцию, но вопрос в другом - как сгенерировать нужное количество имен екземпляров класса? Прием как в Tk не конает.

Заранее спасибо.

Офлайн

#2 Дек. 12, 2014 12:44:02

saw_tooth
Зарегистрирован: 2014-09-08
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

И снова PyQt4

Неужели нет никакого альтернативного варианта кроме как объявлять в ряд 30 кнопок?

Офлайн

#3 Дек. 12, 2014 13:43:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

И снова PyQt4

Можно список кнопок сделать. А если имена делать, используй setattr().

>>> class A:
...     def __init__(self):
...         for i in 'abcd':
...             setattr(self, i, i * 3)
... 
>>> a = A()
>>> a.a, a.b, a.c, a.d
('aaa', 'bbb', 'ccc', 'ddd')
>>>



Офлайн

#4 Дек. 12, 2014 14:32:32

saw_tooth
Зарегистрирован: 2014-09-08
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

И снова PyQt4

py.user.next
Можно список кнопок сделать. А если имена делать, используй setattr().
Если я не ошибаюсь паттерн “фабрика объектов”?

Где мы заводим класс который создает обеъкты

Офлайн

#5 Дек. 13, 2014 00:31:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

И снова PyQt4

saw_tooth
Если я не ошибаюсь паттерн “фабрика объектов”?
Не, это просто пример, чтобы было понятно, как работает setattr().

По паттернам инфа.

Работа фабрики объектов напоминает функционирование виртуального конструктора, - мы можем создавать объекты нужных классов, не указывая напрямую их типы. В самом простом случае, для этого используются идентификаторы типов.



Отредактировано py.user.next (Дек. 13, 2014 02:36:43)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version