Уведомления

Группа в Telegram: присоединиться | Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Авг. 12, 2017 16:40:21

Podarok
Зарегистрирован: 2017-08-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Неопознанный индексируемый объект

Изучаю PySide (aka PyQt). Наткнулся на такое выражение:

 redb.clicked[bool].connect(self.setColor)
Что такое это “clicked”? Что за адская смесь словаря, массива, объекта и очень странной индексации?

Офлайн

#2 Авг. 12, 2017 18:46:18

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 1524
Репутация: +  112  -
Профиль   Отправить e-mail  

Неопознанный индексируемый объект

Это новый стиль сигналов.





С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Авг. 12, 2017 19:12:32

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 476
Репутация: +  94  -
Профиль   Отправить e-mail  

Неопознанный индексируемый объект

clicked это сигнал.
https://wiki.qt.io/Signals_and_Slots_in_PySide
Данный сигнал испускается при активизации кнопки (т.е. когда нажатая кнопка отпускается при нахождении указателя мыши внутри кнопки), при нажатии горячего сочетания клавиш или при вызове click()
bool в данном случае необязательно, redb.clicked.connect(self.setColor) также будет работать.
Это нужно было в С++ для перегрузки сигнала, но в Пайтоне напрямую перегрузка не поддерживаеться, Этим вы кагбе указываетет тип данных котороые передаются вместе с сгналом. clicked и так передает True или False если кнопка имеет атрибут сheckable = True.
У спинбокса например

 valueChanged[str].connect()
и
 valueChanged[int].connect()
будет передавать строку или целое число соответвенно.

Отредактировано PEHDOM (Авг. 12, 2017 19:22:42)

Офлайн

#4 Авг. 12, 2017 23:43:03

Podarok
Зарегистрирован: 2017-08-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Неопознанный индексируемый объект

Я знаю что это сигнал, но мне важно понять какой это тип данных. Что это за объект у которого можно брать индекс в квадратных скобках, при чем в качестве индекса используется тип.

Отредактировано Podarok (Авг. 12, 2017 23:43:36)

Офлайн

#5 Авг. 12, 2017 23:57:28

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 1524
Репутация: +  112  -
Профиль   Отправить e-mail  

Неопознанный индексируемый объект

> Я знаю что это сигнал, но мне важно понять какой это тип данных.

type тебе это покажет.

> Что это за объект у которого можно брать индекс в квадратных скобках, при чем в качестве индекса используется тип.

http://pythonz.net/references/named/object.__getitem__/





С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Авг. 13, 2017 03:31:30

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

Неопознанный индексируемый объект

Podarok
при чем в качестве индекса используется тип.
  
>>> class A:
...     def __getitem__(self, v):
...         if v is bool:
...             return 1
...         else:
...             return 0
... 
>>> a = A()
>>> a[bool]
1
>>> a[10]
0
>>>



Офлайн

#7 Авг. 13, 2017 13:10:11

Podarok
Зарегистрирован: 2017-08-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Неопознанный индексируемый объект

Да, __getitem__ как раз то, что нужно. Спасибо)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version