|
Как в PyQt работать с указателями?
|
|||
---|---|---|---|
#18+
Фреймоворк Qt изначально создавался для С++ и потому изобилует указателями (как в виде параметров метода, так и в виде возвращаемых значений). Но в Python нет никаких указателей, поэтому непонятно как писать код при использовании библиотеки PyQt. Например в С++ я так получал иконку: Код: plaintext 1.
А в Python я пробую это сделать так: from PyQt5 import QtGui from PyQt5.QtWidgets import QApplication, QStyle Код: python 1.
, но получаю ошибку (как раз в том месте, где в С++ я обращался к методу указателя!): Код: plaintext 1.
Наверное есть какое- то общее правило работы с указателями, по которому была составлена библиотека PyQt. И почему- то я нигде его не нашел... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 15:36 |
|
Как в PyQt работать с указателями?
|
|||
---|---|---|---|
#18+
AlekseySQLНаверное есть какое- то общее правило работы с указателями, по которому была составлена библиотека PyQt. И почему- то я нигде его не нашел... Опять 25. В плюсовом коде, при обращении к nullptr'у, который вернул бы QApplication::style() ты бы получил крэш. В питоновом это обёрнуто дополнительными врапперами, и если метод возвращает None, значит, плюсовый статик метод QApplication::style() вернул nullptr. /thread ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 16:17 |
|
Как в PyQt работать с указателями?
|
|||
---|---|---|---|
#18+
NekZAlekseySQLНаверное есть какое- то общее правило работы с указателями, по которому была составлена библиотека PyQt. И почему- то я нигде его не нашел... Опять 25. В плюсовом коде, при обращении к nullptr'у, который вернул бы QApplication::style() ты бы получил крэш. В питоновом это обёрнуто дополнительными врапперами, и если метод возвращает None, значит, плюсовый статик метод QApplication::style() вернул nullptr. /thread Спасибо, у меня раньше не было таких ошибок, поэтому я решил, что указатель не смог корректно отобразиться в объект Python и получил значение None. И все - таки по теме: у меня есть догадка, что все указатели заменяются ссылками. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 16:49 |
|
Как в PyQt работать с указателями?
|
|||
---|---|---|---|
#18+
Я слегка глюканул и не разглядел, что в коде С++ идет обращение к синглтону: Код: plaintext 1.
Поэтому переделал так: Код: python 1. 2. 3. 4.
Но так как я обращаюсь к инстансу QApplication, то этот код работает только после выполнения main (где создается инстанс) и потому может быть только в экземплярах объектов (нельзя, например, создать перечисление с картинками). Сейчас я при создании экземпляра события, для которого нужны эти иконки, анализирую заполненность коллекции с иконами (хранящейся как атрибут этого класса) и если это первое обращение, то заполняю ее. А есть какой- то более симпатичный способ получить заполненную коллекцию без постоянных проверок? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 17:58 |
|
Как в PyQt работать с указателями?
|
|||
---|---|---|---|
#18+
Всем спасибо! Принял решение явно все прописать при создании главного окна (когда экземпляр уже QAplication создан), чтобы все был понятно без всякой магии. Теперь человек, читающий код, увидит, что при начале работы программы создаются общие объекты (а не где- то глубоко расположены какие- то кульбиты). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 08:02 |
|
|
start [/forum/search_topic.php?author=Ukey&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 401ms |
total: | 582ms |
0 / 0 |