Найти - Пользователи
Полная версия: Неопознанный индексируемый объект
Начало » Python для новичков » Неопознанный индексируемый объект
1
Podarok
Изучаю PySide (aka PyQt). Наткнулся на такое выражение:
 redb.clicked[bool].connect(self.setColor)
Что такое это “clicked”? Что за адская смесь словаря, массива, объекта и очень странной индексации?
Rodegast
Это новый стиль сигналов.
PEHDOM
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()
будет передавать строку или целое число соответвенно.
Podarok
Я знаю что это сигнал, но мне важно понять какой это тип данных. Что это за объект у которого можно брать индекс в квадратных скобках, при чем в качестве индекса используется тип.
Rodegast
> Я знаю что это сигнал, но мне важно понять какой это тип данных.

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

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

http://pythonz.net/references/named/object.__getitem__/
py.user.next
Podarok
при чем в качестве индекса используется тип.
  
>>> class A:
...     def __getitem__(self, v):
...         if v is bool:
...             return 1
...         else:
...             return 0
... 
>>> a = A()
>>> a[bool]
1
>>> a[10]
0
>>>
Podarok
Да, __getitem__ как раз то, что нужно. Спасибо)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB