PyQt5 / PyQt6 Designer

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Knollo
User
Beiträge: 65
Registriert: Mittwoch 10. Juni 2020, 14:44

Hallo in die Runde, ich habe mit dem PyQt6-Designer eine mainwindow.ui erzeugt.
Leider kann das Script unter Verwendung von PyQt5 nicht geöffnet werden:

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import uic
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # Laden der UI-Datei
        uic.loadUi('mainwindow_neu.ui', self)

        self.show()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec_())
nicht geöffnet werden. Fehler:

Code: Alles auswählen

AttributeError: type object 'Qt' has no attribute 'QFrame::Shape::StyledPanel'
Da die Datei auf einem Raspi genutzt wird, muss PyQt5 verwendet werden und ich möchte derzeit PyQt6 auf dem Raspi nicht installieren.

Die Nutzung des PyQt5-Designers ist leider auch fehlgeschlagen, die Installation von

Code: Alles auswählen

pip install pyqt5-tools
wird mit der Fehlermeldung abgebrochen.

Code: Alles auswählen

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
Gibt es dafür eine Lösung?

Danke - Stefan
Benutzeravatar
__blackjack__
User
Beiträge: 14295
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die offensichtlichste Lösung wäre den Designer passend zur PyQt-Version zu verwenden. Das nächstliegende wäre IMHO heraus zu finden was der Unterschied zwischen den Designer-Dateien zwischen den beiden Versionen ist, und Code zu schreiben, der die 6er *.ui-Datei auf die 5er-Version ”rückportiert”, Da ist die Frage wie viel das betrifft. Jetzt nur dieses Attribut, oder alle möglichen Konstanten.

Edit: Ein QFrame im 5er-Designer mit frameShape = StyledPanel sieht so aus:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Frame</class>
 <widget class="QFrame" name="Frame">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>320</width>
    <height>200</height>
   </rect>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
 </widget>
 <resources/>
 <connections/>
</ui>
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Knollo
User
Beiträge: 65
Registriert: Mittwoch 10. Juni 2020, 14:44

Danke, die Installation des PyQt5 - Designer ist leider fehlgeschlagen. Der Vergleich mit dem Script der Vorgängerversion zeigt die Unterschiede:

Code: Alles auswählen

: : Shape
: : Shadow
: : Orientation
: : LayoutDirection
: : Section
: : Frame
alle Vorkommen suchen und löschen, ist recht schnell gemacht und läuft jetzt. Dank an Strg+H :geek:

Danke - Stefan
Benutzeravatar
Kebap
User
Beiträge: 789
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

IN den .ui Dateien mit dem Texteditor zu bearbeiten, scheint mir keine langfristige Lösung.

Wenn du das nächste Mal etwas im Designer anpassen möchtest, ist der Fehler zurück.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten