So richtig glücklich bin ich mit meiner aktuellen Lösung für Python 3.6 und PyQt 5.7.1 zwar auch noch nicht, aber sie funktioniert.
1. Um eine fertige .ui-Datei im Programm zu verwenden, braucht man nicht pyuic, sondern loadUi, aus dem Modul uic, zum Beispiel so:
Code: Alles auswählen
from PyQt5 import QtCore
...
from PyQt5 import uic
class TownsForm(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
uic.loadUi("statoids_xml.ui", self)
self.btExport.clicked.connect(self.exportData)
self.show()
Die .ui-Datei "statoids_xml.ui" ist mit dem Designer erzeugt und liegt im gleichen Verzeichnis wie der Code. "btExport" ist der Name eines QPushButtons in dieser Datei; den kann ich im Code als Attribut meiner Fensterklasse benutzen. Die Methode exportData() habe ich weggelassen, aber natürlich ist sie nötig. So ist das Zeug aber sowieso nicht lauffähig. Bis zu diesem Punkt kommt man ohne weiteres, wenn man PyQt5 mit pip install ... installiert hat.
Zum Umgang mit loadUi steht einiges in der offiziellen PyQt-Dokumentation auf den Riverbank-Seiten; es gibt da mehrere Varianten.
2. Hier wird's mühsamer als es früher war: die alten Windows-Installationsdateien für PyQt hatten den QtDesigner dabei, in den Wheels steckt er nicht. Das PyPi-Paket "pyqt5-tools 5.7.dev9" enthält ihn, existiert aber (noch?) nicht in einer Version für Python 3.6. Ich habe mir von der Qt-Seite den QtCreator geholt und installiert, der enthält den Designer, aber auch einen Haufen Zeugs, den man nur brauchen würde, wenn man direkt mit Qt, nicht mit PyQt arbeiten wollte. Immerhin kann ich mit dem eine .ui-Datei öffnen und weiter bearbeiten; wie ich verfahren muss, wenn ich eine neue .ui-Datei anfangen will, aber kein Qt-Projekt erzeugen oder so was, habe ich noch nicht raus.
Wenn jemand hierzu mehr weiß oder ausprobiert hat, wäre auch ich dankbar für weitere Berichte.