Почему нельзя изменять код, созданный Qt Designer

Рейтинг: 2Ответов: 2Опубликовано: 04.02.2023

Мне часто говорили, что нельзя изменять код, созданный Qt Designer, будет не работать.
Я достаточно часто под себя изменяю код, но при этом все идеально работает, без каких-либо ошибок.

Ответы

▲ 3

Вообще менять можно (код-то работать будет), но настоятельно не рекомендуется. И вот почему.

Представим ситуацию: вы создали приложение, изменили код, созданный через QtDesigner. А потом вам/заказчику захотелось изменений в интерфейсе будь то новые возможности ПО или просто дизайн. Вы меняете старый интерфейс на новый в QtDesigner и вам теперь придется снова менять новый сгенерированный файл. Это займет много времени и, скорее всего, приведет к ошибкам в коде.

А теперь представим то же приложение, но вы не меняли файл, а импортировали его и написали "обертку". Тогда вам просто нужно:

  1. при чисто дизайновом (косметическом) изменение приложения - изменить дизайн в QtDesigner
  2. при добавлении нового функционала: дописать новый функционал в обертку, изменить интерфейс в QtDesigner.

Как видите, действий во втором случае гораздо меньше, плюс используется принцип повторного использования, что дает выгоду и во времени и в качестве разработки.

▲ 3

Как говорится в предупреждении в заголовке всех сгенерированных pyuic файлов, вам не следует редактировать их, если вы действительно не знаете, что делаете. И если вы знаете, что делаете, вы не будете их редактировать. Это вежливый способ сказать: вы никогда не должны редактировать эти файлы.

То, что генерирует утилита pyuic, всегда должно использоваться как импортированный модуль, и его никогда нельзя редактировать или использовать в качестве отправной точки для вашей программы. Рассматривайте его как файл ресурсов (как изображение или данные json); см. документацию об этом.

Для этого есть несколько причин, наиболее важная из которых заключается в том, что всякий раз, когда вы редактируете файл пользовательского интерфейса, созданный в Designer, вам придется объединять свой код с кодом из нового сгенерированного файла py, что, вероятно, приведет к неожиданному результату или, в большинстве случаев головная боль возникает из-за расхождений между написанным вами логическим кодом и модификациями, которые вы внесли в графический интерфейс.