|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
|
|||||||||||
PySide Проблема с атрибутами14.03.2024, 14:50. Показов 933. Ответов 13
Столкнулся с проблемой, делаю интерфейс с помощью py + pyside2.
Возникла необходимость переноса функционала программы в отдельный файл Function.py. Ошибка связана с атрибутами, я понимаю что не правильно ссылаюсь на тот или иной класс или атрибут, но не понимаю как исправить. Вложу кусок кода с переносом функции для понимания. Файл Interface_code.py
Ошибка такая: Traceback (most recent call last): File "d:\GUI\function.py", line 20, in resize_Menu_right self.ui.openMenu_btn.setIcon(QIcon(r"qrc \arrowhead-thin-outline-to-the-left.png")) AttributeError: 'bool' object has no attribute 'ui'
0
|
|||||||||||
| 14.03.2024, 14:50 | |
|
Ответы с готовыми решениями:
13
Проблема с атрибутами субформы проблема с атрибутами расшаренной для сети папки Использование типов DataContract с другими атрибутами. Прокси класс не генерирует DataContract с атрибутами |
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||||
| 14.03.2024, 16:47 | ||||
|
Ultimaforsan, к сожалению, ты вообще не понимаешь как работают классы. Что такое self?
self.ui в данном классе - это что? Где? Откуда? ЗЫ:
0
|
||||
|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
|
|||||||||||
| 14.03.2024, 19:46 [ТС] | |||||||||||
|
Да, сейчас вот изучаю этот вопрос. Self нужен как первый параметр для экземпляра, чтобы при вызове он указал на свой экземпляр в моем случае это класс Function
что такое self.ui - понимаю что ошибка в этом, не понимаю как передать это значение в другой файл не стыкуется в голове. Есть два файла Main.py - запускает окно - там создан конструктор
Теперь хочу создать файл Function.py и из него иметь возможность управлять и писать функции применимые к главному файлу main.py Изучи вопрос дочерних классов и родительских, но это не особо пока помогло разобраться. Где в этом классе такая функция? Function.clouse_left_menu(self) - Понимаю что обращаться к ней без указания класса, а просто self осталось при переносе) Она идет ниже по коду в классе Function, не привел код
0
|
|||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|||
| 15.03.2024, 08:17 | |||
|
Добавлено через 4 минуты А вцелом вопрос нужно поставить по другому - зачем ты это делаешь?
1
|
|||
|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
|
|
| 15.03.2024, 12:28 [ТС] | |
|
Тогда прошу пояснения для чего нужен Self?
Где у тебя создается экземпляр класса Function? Это я и хочу понять, как мне создать все правильно чтобы повторно подгружать файл ui и обращаться к нему. Так как в документации прочитал что для работы с ui его нужно подгружать повторно при каждом изменении или обращении. Для чего я это делаю, мне необходимо логику программы, а именно функции, классы с параметрами предметов и тд разделить на множество файлов (такая задача). например главный файл запуска Main.py, файл функций - function.py, файл параметров персонажа hero.py и тд
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|||
| 15.03.2024, 12:58 | |||
|
self - это ссылка объекта класса на самого себя. Не на класс, а на конкретно взятый инстанс.
0
|
|||
|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
|
||||||||||||||||
| 15.03.2024, 13:34 [ТС] | ||||||||||||||||
|
Я все это время и изучаю ООП и примерно понял как классы работают, просто при изучении примеры банально простые.
Два - три класса, один или два расширяют основной, self как первый параметр который ссылается на класс (видно если навести на self на кого он обращается) Проверяется сначала дочерние классы на функции, если нету идут в родительский, это все понятно, кучу примеров разобрал и все работает, но когда пробую применить знания в своей задаче, эти все ссылки усложняться и происходит путаница. Сейчас я не понимаю, как подгрузить self.ui в мой второй файл с функциями. Function.py
Когда вставляю все в основной файл main.py (откуда происходит загрузка приложения) все работает.
Сама функция resize_Menu_right выполняется
возникает ошибка с атрибутами, почему так, я не понимаю, где и что я не указал. Читать и изучать я готов, но все что читаю пока не помогает решить проблему, все примеры которые показаны в изучении у меня работают.
0
|
||||||||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|||
| 15.03.2024, 13:45 | |||
|
Вот сходу - класс MainWindow наследуется от QMainWindow. А класс Game_func - от object (кстати, абсолютно бестолковая декларация). Почему?
0
|
|||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||||||
| 15.03.2024, 14:22 | ||||||
Сообщение было отмечено Ultimaforsan как решение
Решение
Микропример
2
|
||||||
|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
|
||||||||||||||||||||||||||||||||||||
| 15.03.2024, 20:29 [ТС] | ||||||||||||||||||||||||||||||||||||
|
Хорошо, наследование обоих классов я сделал от QMainWindow
Предположим я не делаю окно напрямую, а генерирую его в Qt designer - получаю файл interface.ui - конвертирую в interface_ui.py Далее делаю главный файл interface_code.py (главный запускатор приложение) interface_code.py
в котором главным классом является
Далее я создаю еще одни файл game_functin.py
Ошибка: File "d:\GUI\game_function.py", line 25, in resize_Menu_right self.ui.openMenu_btn.setIcon(QIcon(r"qrc \arrowhead-thin-outline-to-the-left.png")) AttributeError: 'bool' object has no attribute 'ui' Нет атрибута Ui - он его не знает я ему его не передал, вопрос, как передать ему знания об этом. В главном файле Function_code.py я использовал
В этом и заключается моя проблема, осталось понять как её решить. Что мне указать и куда сослаться.
0
|
||||||||||||||||||||||||||||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||||
| 15.03.2024, 21:03 | ||||
|
Опять за рыбу деньги...
Это три. Ну и в итоге - ты этот экземпляр нигде не создаешь. Посмотри внимательно на мой пример. Я ж не просто так его написал. Подумай, разберись в нем.
0
|
||||
|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
|
|||||||||||
| 18.03.2024, 10:27 [ТС] | |||||||||||
|
Разобрался, в вашем примере действительно есть подсказка, но пришлось править для своего кода.
Спасибо большое за подсказки и уделённое время. Ниже выложу код который завелся, т.к. видел много тем и нигде не было ответа, будет тут. Еще стоит поработать над импортами и сократить их, но это уже друга история. файл 1 Function_code.py
файл 2 game_function.py
0
|
|||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 18.03.2024, 10:34 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
|
|
| 18.03.2024, 10:40 [ТС] | |
|
Осталось при разборке ( а как это работает), это действительно в этом файле не нужно.
0
|
|
| 18.03.2024, 10:40 | |
|
Помогаю со студенческими работами здесь
14
Тайлы с атрибутами Наследование класса с атрибутами iframe - работа с атрибутами Задача с атрибутами и методами Xml с двумя атрибутами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|