Форум сайта python.su
Изучаю PySide (aka PyQt). Наткнулся на такое выражение:
redb.clicked[bool].connect(self.setColor)
Офлайн
Это новый стиль сигналов.
Офлайн
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()
[code python][/code]
Отредактировано PEHDOM (Авг. 12, 2017 19:22:42)
Офлайн
Я знаю что это сигнал, но мне важно понять какой это тип данных. Что это за объект у которого можно брать индекс в квадратных скобках, при чем в качестве индекса используется тип.
Отредактировано Podarok (Авг. 12, 2017 23:43:36)
Офлайн
> Я знаю что это сигнал, но мне важно понять какой это тип данных.
type тебе это покажет.
> Что это за объект у которого можно брать индекс в квадратных скобках, при чем в качестве индекса используется тип.
http://pythonz.net/references/named/object.__getitem__/
Офлайн
Podarok
при чем в качестве индекса используется тип.
>>> class A: ... def __getitem__(self, v): ... if v is bool: ... return 1 ... else: ... return 0 ... >>> a = A() >>> a[bool] 1 >>> a[10] 0 >>>
Офлайн
Да, __getitem__ как раз то, что нужно. Спасибо)
Офлайн