@Rekrul: Das funktioniert nur, wenn Schreibrechte im Verzeichnis mit den UI-Dateien bestehen. Das ist im Regelfall nur während der Entwicklung, aber nicht bei einer normalen Installation der Fall. Diesen Ansatz zu nutzen, ist daher nicht ratsam. Es ist ganz allgemein nicht sonderlich elegant, Aufgaben, die eigentlich der Entwicklungsumgebung obliegen (wie eben das Kompilieren von Dateien), im Quelltext selbst zu erledigen, denn für jeden anderen Nutzer Deines Programms ist das einfach überflüssig.
Wenn Dir das Kompilieren lästig ist, dann stelle Deine IDE so ein, dass sie vor der Ausführung des Programms die UI-Dateien kompiliert. Auf die eine oder andere Weise wird das wohl auch in Eclipse und Pydev möglich sein.
Du kannst das dann auch mit dem dynamischen Laden kombinieren, indem Du zuerst versuchst, die UI-Datei zu importieren, und sie im Falle eines Fehlers dynamisch lädst. So funktioniert die Vervollständigung der Entwicklungsumgebung, ohne dass Du bei der Verteilung Deines Programms kompilierte Dateien mitliefern musst, was die Verteilung im Regelfall erschwert. Das könnte dann in etwas so aussehen:
Code: Alles auswählen
try:
from GUI.UI.MainWindow_UI import Ui_MainWindow
except ImportError:
from PyQt4.uic import loadUi
Ui_MainWindow = None
class MainWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent=None):
if Ui_MainWindow:
ui = Ui_MainWindow()
ui.setupUi(self)
else:
uic.loadUi('mainwindow.ui', self)
@Hyperion: Deine Präferenzen in Ehren, aber akzeptiere, dass der OP andere hat. Du musst nicht jedes Mal, wenn jemand anders verfährt als Du oder Deine Vorlieben nicht teilt, die Sinnfrage stellen und Deine eigenen Vorlieben aufdrängen.