[PYTHON] Automatisch in py-Datei konvertieren, wenn die UI-Datei von PySide aktualisiert wird

Wenn Sie QtDesigner zum Erstellen einer .ui-Datei verwenden, müssen Sie diese jedes Mal, wenn Sie die Datei aktualisieren, in eine py-Datei mit pyside-uic konvertieren, was sehr ärgerlich ist.

Wenn die UI-Datei aktualisiert wird, schreiben Sie ein Skript, das sie automatisch mit pyside-uic konvertiert.

Verwenden Sie das Watchdog-Modul

Die Überwachung von Dateiaktualisierungen ist ein sehr praktisches Modul, das das Watchdog-Modul verwendet. Die Installation ist mit pip einfach.

pip install watchdog

Erstellen Sie als Nächstes eine Datei mit dem Namen watchdog_uic.py im Stammverzeichnis, in dem sich die UI-Datei befindet.

#! usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function, absolute_import
import os
import time
import subprocess
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler

BASE_DIR = os.path.abspath(os.path.dirname(__file__))


class UicHandler(PatternMatchingEventHandler):
    def on_modified(self, event):
        ui_file = event.src_path
        output_file = os.path.splitext(ui_file)[0] + "_ui.py"
        cmd = " ".join([
            "pyside-uic",
            "-o " + output_file,
            ui_file
        ])
        print(cmd)
        subprocess.call(cmd, shell=True)


def main():
    while True:
        event_handler = UicHandler(["*.ui"])
        observer = Observer()
        observer.schedule(event_handler, BASE_DIR, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()


if __name__ == "__main__":
    main()

Im obigen Beispiel wird die .ui-Datei in die Namenskonvention _ui.py geändert. Bitte implementieren Sie die Namensregeln selbst.

python watchdog_uic.py

Wenn Sie dieses Skript starten, werden alle UI-Dateien im Verzeichnis unter der Skriptdatei überwacht und konvertiert.

Ich benutze Watchdog seit ungefähr einem halben Jahr für die automatische Konvertierung, aber es ist zu einfach, zur manuellen Konvertierung zurückzukehren.

Nachtrag 2017-01-06

"Die stärkste PySide / PyQt-Entwicklungsumgebung ist auch PyCharm" hat geschrieben, wie PyCharm automatisch konvertiert wird. Bitte beachten Sie auch dies.

Recommended Posts

Automatisch in py-Datei konvertieren, wenn die UI-Datei von PySide aktualisiert wird
Konvertieren Sie die psd-Datei in Python in png
So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an
Jupyter in py umwandeln
Typstempel in Sublime Text einfügen (beim Speichern automatisch aktualisiert)
Konvertieren Sie eine Excel-Datei für verschiedene Zwecke in Python in Text
Konvertieren Sie HTML in eine Textdatei
Konvertieren Sie die Genbank-Datei in die GFF-Datei
Erfassen Sie das Betriebsprotokoll automatisch im Terminal, wenn Sie sich bei Linux anmelden
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
So geben Sie eine .py-Datei an, die beim Start in IPython 0.13 geladen werden soll
Wie man sich verbessert, wenn Spyders Editor in Mavericks sehr schwer ist
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
Konvertieren Sie Markdown in Python in PDF
So konvertieren Sie 0,5 in 1056964608 auf einmal
Führen Sie beim Speichern von Dateien automatisch Tests aus
Was tun, wenn das über Scrapy heruntergeladene Ergebnis auf Englisch ist?
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Was tun, wenn in der Anaconda-Umgebung die Warnung "Die Umgebung ist konsistent ..." angezeigt wird
python So benachrichtigen Sie automatisch per Telefon, wenn das System ausfällt
Was tun, wenn eine Warnmeldung in der Pip-Liste angezeigt wird?