Designer .ui in Idle verwenden

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
kbe
User
Beiträge: 27
Registriert: Mittwoch 26. Dezember 2012, 12:10

Hallo, ich bitte um Hilfe.
Ich weiß, dass Ihr solche primitiven Fragen nicht mögt, bitte deshalb um Nachsicht.
Ich habe mit dem Qt-Designer eine Test-Formular erstellt, die .ui in .py umgewandelt und in Idle geladen.

Code: Alles auswählen

....
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(400, 598)
        self.buttonBox = QtGui.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(20, 530, 341, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
        self.listView = QtGui.QListView(Dialog)
        self.listView.setGeometry(QtCore.QRect(50, 20, 256, 192))
        self.listView.setAutoFillBackground(False)
        self.listView.setObjectName(_fromUtf8("listView"))

        self.retranslateUi(Dialog)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))

fenster=Ui_Dialog()
Und wie zeige ich das Formular nun an?
show und ähnliches ist nicht richtig.
Kann jemand mir die eine Zeile aufschreiben?
Gruß aus DD
BlackJack

@kbe: Als erstes mal solltest Du das generierte Modul nicht verändern sondern die Klasse daraus in einem eigenen, neuen Modul importieren.

Um eine Qt-Anwendung laufen zu lassen muss man ein Exemplar von `QtGui.QApplication` erstellen und als letztes im Quelltext der alles initialisiert dessen `exec_()`-Methode aufrufen. Denn erst dann läuft die Hauptschleife von Qt, die für das Anzeigen und Aktualisieren der UI und die Verarbeitung der Ereignisse verantwortlich ist.

Arbeite am besten mal ein PyQt4-Tutorial durch.

Bei dem generierten Quelltext sieht es so aus als wenn Du die Widgets absolut platziert hast, statt Layouts zu verwenden. Das ist keine gute Idee, denn dann passt sich die GUI nicht den gegebenheiten des Systems an auf dem sie läuft.

Quelltext generieren ist auch schon etwas länger aus der Mode — man kann die ``*.ui``-Datei aus dem Designer auch dynamisch im Programm laden ohne den Umweg über generierten Quelltext gehen zu müssen.

Edit: In der PyQt4-Dokumentation gibt es auch einen Abschnitt Using Qt Designer.
Benutzeravatar
kbe
User
Beiträge: 27
Registriert: Mittwoch 26. Dezember 2012, 12:10

Danke, das gibt mir Orientierung in der Unmenge von Tuts u.Ä.
Gruß aus DD
Benutzeravatar
kbe
User
Beiträge: 27
Registriert: Mittwoch 26. Dezember 2012, 12:10

noch ein Nachtrag:
Die Tuts sind gut, doch ich hatte immer noch eine Info-Lücke.
Schließlich hat mir folgendes Video drüber hinweg geholfen:
https://www.youtube.com/watch?v=JOuCuLHmk3o
Wenn jemand ein ähnliches Problem hat, das Video ist empfehlenswert.
Gruß aus DD
Antworten