Задать вопрос

Как разделить генерируемый код и собственный в Py QtDesigner?

Всем привет. я только начинаю изучать связку Python3.4 + PyQt (QtDesigner).

Столкнулся с проблемой, которую не знаю как обойти. QtDesigner классно рисует GUI. С помощью утилиты pyuic5 он классно переводиться в код питона. А с помощью cx_freeze это все прикольно генерируется в переносные приложения. Но вот незадача.

Начал я писать что-то более серьезное чем пустое окно. Надо мне сделать обработку событий. Для этого надо в сигнал/слот запихать свою функцию.

Но ведь мой файл генерируется каждый раз заново дизайнером, если я меняю что-то на форме. И все изменения в коде модуля, описывающего интерфейс, затрутся. Как принято обходить этот момент?

Заранее спасибо.
  • Вопрос задан
  • 337 просмотров
Подписаться 5 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 2
@nothingmore
Есть один русскоязычный учебник, где основы работы с PyQt разбираются весьма подробно и доходчиво .
Ответ написан
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
1) Можно посмотреть на вики, как динамически загружать *.ui без pyuic (https://ru.wikipedia.org/wiki/PyQt).
2) Если прям вот нужен файл, сгенерированный pyuic, то все сделать по аналогии с обычным Qt (как-то так, точно не помню):
# в конструкторе нового класса, который наследуется от QWidget
self.ui = ui_GeneratedWidget()
self.ui.setupUi(self)

Смысл в том, что у вас есть два класса: обёртка, которая наследуется от QWidget и то что сгенерировал вам uic. В обёртке вы пишете всю логику. Файл который генерируется руками трогать не надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽