Wie optimiert man das Pyuic5-Produkt automatisch? [geschlossen]Python

Python-Programme
Guest
 Wie optimiert man das Pyuic5-Produkt automatisch? [geschlossen]

Post by Guest »

Ich habe diese Datei aus dieser UI-Datei erstellen lassen.
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.
Da die Datei groß ist, möchte ich diesen Prozess automatisieren.Dieser Code:

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')
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“]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post