PyQt5 .ui Datei einbinden

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
Zennoe
User
Beiträge: 16
Registriert: Montag 12. August 2013, 21:46

Liebes Forum,

ich habe mit dem Qt Designer eine .ui-Datei erstellt. Nun versuche ich diese mit PyQt5 zu benutzen. Das Problem ist aber, dass ich nur eine Anleitung für PyQt4 habe. Ich möchte aber PyQt5 verwenden. Und eine Google-Suche hat mir auch nicht weitergeholfen. :K

Hat da vielleicht eine Ahnung von?
Mein Skript für PyQt4 sähe so aus:

Code: Alles auswählen

import sys
from PyQt4 import QtGui, QtCore, uic
class Fenster(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.ui = uic.loadUi("ui/main.ui", self)

        # Slots einrichten
        self.ui.senden.clicked.connect(self.onSend)
        self.ui.nachricht.returnPressed.connect(self.onSend)
        self.ui.disconnect.clicked.connect(self.onDisconn)

        def onSend(self):
            print("Gesendet")
        def onDisconn(self):
            print("Getrennt")
app = QtGui.QApplication(sys.argv)
window = Fenster()
window.show()
sys.exit(app.exec_())

Code: Alles auswählen

print("Zennoe sprach!")
Ja, das hat er!
lunar

Zennoe hat geschrieben:ich habe mit dem Qt Designer eine .ui-Datei erstellt. Nun versuche ich diese mit PyQt5 zu benutzen. Das Problem ist aber, dass ich nur eine Anleitung für PyQt4 habe. Ich möchte aber PyQt5 verwenden. Und eine Google-Suche hat mir auch nicht weitergeholfen. :K
Wie kann man denn die offizielle Referenz nicht finden?!
Benutzeravatar
Zennoe
User
Beiträge: 16
Registriert: Montag 12. August 2013, 21:46

Den Artikel hab ich auch schon gefunden. Allerdings habe ich keinen Plan, wie ich den Code generieren soll. Deshlab wollte ich die .ui-Datei einbinden. :oops::
The code that is generated has an identical structure to that generated by Qt’s uic and can be used in the same way.

The code is structured as a single class that is derived from the Python object type. The name of the class is the name of the toplevel object set in Designer with Ui_ prepended. (In the C++ version the class is defined in the Ui namespace.) We refer to this class as the form class.

Code: Alles auswählen

print("Zennoe sprach!")
Ja, das hat er!
BlackJack

@Zennoe: Pssst, die verlinkte Webseite ist länger als das was sofort im Browser angezeigt wird. Man kann runter scrollen und da kommen dann noch mehr Informationen. Zum Beispiel über das `uic`-Modul.
Benutzeravatar
Zennoe
User
Beiträge: 16
Registriert: Montag 12. August 2013, 21:46

Sry :oops:
Okay. Aber das ist exakt der gleiche Befehl wie in PyQt4. Es hat mir also nicht weiter geholfen :|
Und für die Klasse gibt es keine Referenz der Klasse QtGui. Deshalb frag ich ja! :(

Code: Alles auswählen

print("Zennoe sprach!")
Ja, das hat er!
BlackJack

@Zennoe: Hä? Ja, das sieht genau so aus wie bei PyQt4. Und wo ist nun das Problem? Welches *konkrete* Problem hast Du?

Wobei Deine `uic.loadUi()`-Zeile zuviel macht. Entweder Du bindest das Ergebnis an `self.ui` und verwendest das Attribut, oder Du erbst vom passenden Wigdet und übergibts `self` als zweites Argument an `loadUi()`. *Beides* zu machen ist nicht sinnvoll.
Benutzeravatar
Zennoe
User
Beiträge: 16
Registriert: Montag 12. August 2013, 21:46

Das Problem ist wohl er folgendes: :oops:

Code: Alles auswählen

Traceback (most recent call last):
** IDLE Internal Exception: 
  File "C:\Python33\lib\idlelib\run.py", line 339, in runcode
    exec(code, self.locals)
  File "C:/Users/Thomas Schmitz/Documents/Python/Chatomat/client/run.py", line 3, in <module>
    class Fenster(QtGui.QMainWindow):
AttributeError: 'module' object has no attribute 'QMainWindow'
Also die QtGui hat kein QMainWindow. Das Problem ist, dass ich nicht weiß, wie ich das sonst lösen soll. Kennst sich denn wirklich niemand mit PyQt5 aus?

@BlackJack: Danke habe ich sofort verbessert. Es ist aber klar, dass der Code bis dahin noch nicht ausgeführt wird.

Code: Alles auswählen

print("Zennoe sprach!")
Ja, das hat er!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du hast doch den Link zur Referenz.

Und bei dem Eintrag zu QtGui steht sogar explizit:
PyQt4’s QtGui module has been split into PyQt5’s QtGui, QtPrintSupport and QtWidgets modules.
Das Leben ist wie ein Tennisball.
Antworten