У меня есть этот файл, созданный на основе этого файла пользовательского интерфейса.
Я хочу его оптимизировать.
Оптимизация:
Удалить команду 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']
У меня есть этот файл, созданный на основе этого файла пользовательского интерфейса. Я хочу его оптимизировать. Оптимизация: [list] [*]Удалить команду setObjectNames.
[*]Удалить def retranslateUI, вместо этого установить текст об инициализации объекта. Также не используйте метод перевода. Непосредственно задайте текст без перевода.
[*]Задайте как можно больше свойств при инициализации объекта. Например, если QLabel имеет родительский элемент, текст и выравнивание, это можно сделать в одной строке кода.
[*]Удалить, если __name__=='__main__' : заблокировать, поскольку файл будет импортирован.
[*]Удалите комментарии pyuic5 в начале файла. [*]Что еще вы думаете это оптимизирует файл.
[/list] Поскольку файл большой, я хочу автоматизировать этот процесс.Этот код: [code]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()
# 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') [/code] как хорошее начало. [b]Изменить:[/b] В retranslate_UI есть этот метод для записи текста в объект: [' setText', 'setWindowTitle', 'setStatusTip', 'setPlaceholderText', 'setTitle', 'setToolTip', 'setShortcut', 'setIconText']