Qt-Designer-Dateien *.ui zur Laufzeit laden

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
dibujo
User
Beiträge: 13
Registriert: Donnerstag 16. Oktober 2014, 12:43

Hallo,
ich habe in diversen Beiträgen gelesen, dass man die *.ui-Dateien auch zur Laufzeit laden kann.
Ich bin Python-GUI-Anfänger, programmiere auf einem Mac mit PyCharm (PySide) und Qt-Designer. Z. Z. gehe ich noch den Umweg über das Terminal "--> pyside.uic ui-datei.ui > ui-datei.py".
Gibt's da einen Trick? :K
Danke für eure Mühen :)
BlackJack

@dibujo: Das sollte wie bei C++ gehen mit einem `QUiLoader`-Exemplar.

Wird die GUI denn überhaupt so komplex das man den Qt-Designer benötigt?
dibujo
User
Beiträge: 13
Registriert: Donnerstag 16. Oktober 2014, 12:43

Hallo,
danke der Nachfrage.
Ich lerne Python nicht nur wegen dieses einen Projekts.
Für mich ist dieses Projekt der Einstieg, um mich in Python schlau zu machen. Langfristig möchte ich Python und das Raspberry Pi als Physical Computing und Informatik-Projekt an unserer Schule einführen. Daher dieser "Aufwand", der nur für dieses Kunstprojekt sicherlich übertrieben wäre.
Zurück zu meiner Eingangsfrage: Deinen aufgeführten QUiLoader gibt es bei PySide anscheinend nicht
viele Grüße
dibujo
BlackJack

@dibujo: Also bei mir gibts den:

Code: Alles auswählen

In [4]: from PySide import QtUiTools

In [5]: QtUiTools.QUiLoader
Out[5]: PySide.QtUiTools.QUiLoader
dibujo
User
Beiträge: 13
Registriert: Donnerstag 16. Oktober 2014, 12:43

Gracias!
dibujo
User
Beiträge: 13
Registriert: Donnerstag 16. Oktober 2014, 12:43

Hallo,
sorry, aber ich versuche mich jetzt schon seit einer Stunde. Das Lesen des Doku sowie das Beispiel aus dem Forum hilft mir bislang auch noch nicht weiter. So schwer kann es eigentlich nicht sein?! Ich wollte ein einfaches Beispiel aus einem Tutorial anpassen.

Code: Alles auswählen

import sys
from PySide.QtGui import QMainWindow, QPushButton, QApplication
from Ui_Beende_Programm import Ui_MainWindow

app = QApplication(sys.argv)

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

frame = MainWindow()
frame.show()
sys.exit(app.exec_())
Vielen Dank für die Hilfe im Voraus!
Zuletzt geändert von dibujo am Montag 27. Oktober 2014, 08:48, insgesamt 1-mal geändert.
dibujo
User
Beiträge: 13
Registriert: Donnerstag 16. Oktober 2014, 12:43

Hi,
hab's inzwischen doch selber rausbekommen!

Code: Alles auswählen

import sys
from PySide.QtGui import QMainWindow, QPushButton, QApplication
from PySide.QtUiTools import QUiLoader

app = QApplication(sys.argv)

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        loader = QUiLoader()
        self.ui = loader.load('Beende_Programm.ui', self)
        #self.ui.show()

frame = MainWindow()
frame.ui.show()
sys.exit(app.exec_())
Gibt's elegantere Lösungen?
Viele Grüße
dibujo
Antworten