Wie optimiert man das Pyuic5-Produkt automatisch? [geschlossen]
Posted: 05 Jan 2025, 14:01
Ich habe diese Datei aus dieser UI-Datei erstellen lassen.
Ich möchte sie optimieren.
Optimierungen:
als guter Anfang.
Bearbeiten: In retranslate_UI gibt es diese Methode zum Schreiben von Text in ein Objekt: [' setText“, „setWindowTitle“, „setStatusTip“, „setPlaceholderText“, „setTitle“, „setToolTip“, „setShortcut“, „setIconText“]
Ich möchte sie optimieren.
Optimierungen:
- Löschen Sie den Befehl „setObjectNames“.
- Entfernen Sie def retranslateUI, stattdessen set der Text zur Objektinitialisierung. Verwenden Sie auch nicht die Übersetzungsmethode. Legen Sie den Text direkt ohne Übersetzung fest.
- Legen Sie bei der Objektinitialisierung so viele Eigenschaften wie möglich fest. Wenn ein QLabel beispielsweise über übergeordnetes Element, Text und Ausrichtung verfügt, kann dies in einer Codezeile erfolgen.
- Entfernen, wenn __name__=='__main__' : blockieren, da die Datei importiert wird.
- Pyuic5-Kommentare am Anfang der Datei entfernen.
- Was auch immer Sie denken Dadurch wird die Datei optimiert.
Code: Select all
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')
Bearbeiten: In retranslate_UI gibt es diese Methode zum Schreiben von Text in ein Objekt: [' setText“, „setWindowTitle“, „setStatusTip“, „setPlaceholderText“, „setTitle“, „setToolTip“, „setShortcut“, „setIconText“]