Как автоматически оптимизировать продукт pyic5? [закрыто]Python

Программы на Python
Ответить
Anonymous
 Как автоматически оптимизировать продукт pyic5? [закрыто]

Сообщение Anonymous »

У меня есть этот файл, созданный на основе этого файла пользовательского интерфейса.
Я хочу его оптимизировать.
Оптимизация:
  • Удалить команду setObjectNames.
  • Удалить def retranslateUI, вместо этого установить текст об инициализации объекта. Также не используйте метод перевода. Непосредственно задайте текст без перевода.
  • Задайте как можно больше свойств при инициализации объекта. Например, если QLabel имеет родительский элемент, текст и выравнивание, это можно сделать в одной строке кода.
  • Удалить, если __name__=='__main__' : заблокировать, поскольку файл будет импортирован.
  • Удалите комментарии pyuic5 в начале файла.
  • Что еще вы думаете это оптимизирует файл.
Поскольку файл большой, я хочу автоматизировать этот процесс.Этот код:

Код: Выделить всё

def optimize_pyuic5_file(input_file, output_file):
try:
# Read the original file
with open(input_file, 'r', encoding='utf-8') as file:
lines = file.readlines()

setupUI_commands = []
retranslateUI_commands = []
in_setupUI = False
in_retranslateUI = False

# Parse the input file and categorize lines
for line in lines:
stripped = line.strip()

# Skip pyuic5 comments
if stripped.startswith("#") or stripped.startswith('"') or not stripped:
continue

# Handle setupUi
if "def setupUi(self, MainWindow):" in stripped:
in_setupUI = True
in_retranslateUI = False
continue

if "def retranslateUi(self, MainWindow):" in stripped:
in_retranslateUI = True
in_setupUI = False
continue

# Skip the main block
if 'import os' in stripped:
break

if in_setupUI:
setupUI_commands.append(stripped)
continue

if in_retranslateUI:
retranslateUI_commands.append(stripped)
continue

# Remove specific setupUi and retranslateUi commands

setupUI_commands = [
cmd for cmd in setupUI_commands
if not cmd.startswith(("self.setObjectName", "self.retranslateUi", "QtCore.QMetaObject.connectSlotsByName"))
]
retranslateUI_commands = [
cmd for cmd in retranslateUI_commands
if "_translate = QtCore.QCoreApplication.translate" not in cmd
]

retranslateUI_sorting_commands = [
cmd for cmd in retranslateUI_commands
if ('__sortingEnabled =' in cmd) or ('.setSortingEnabled(' in cmd)
]

retranslateUI_text_commands = [
cmd for cmd in retranslateUI_commands
if cmd not in retranslateUI_sorting_commands
]

retranslateUI_text_commands_final = []

counter = -1
for cmd in retranslateUI_text_commands:
counter += 1
if '=' in cmd:
widget = cmd.split(' = ')[1]
text = retranslateUI_text_commands[counter+1].split('item')[1]
text_parts = text.split('_translate(')
part_1 = text_parts[0]
real_text = text_parts[1].split('"')[3]
final_cmd = widget+part_1+'"'+real_text+'")'
else:
parts = cmd.split('_translate(')
part_1 = parts[0]
_text = parts[1].split('"')[3]
final_cmd = part_1 +'"'+_text+'")'
retranslateUI_text_commands_final.append(final_cmd)

'''
# Write the optimized content to the output file
with open(output_file, 'w', encoding='utf-8') as file:
file.write("\n".join(optimized_lines) + "\n")

print(f"Optimized file saved to {output_file}")
'''

except Exception as e:
print(f"An error occurred: {e}")

if __name__ == "__main__":
optimize_pyuic5_file('input.py', 'output.py')
как хорошее начало.
Изменить: В retranslate_UI есть этот метод для записи текста в объект: [' setText', 'setWindowTitle', 'setStatusTip', 'setPlaceholderText', 'setTitle', 'setToolTip', 'setShortcut', 'setIconText']

Подробнее здесь: https://stackoverflow.com/questions/793 ... omatically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»