Fehler bei uic

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Lasse
User
Beiträge: 112
Registriert: Donnerstag 3. Februar 2011, 18:25

Hallo Pythoner und Qt Nutzer,

ich möchte ein mit dem Qt Designer erstelltes Programm dynamisch generieren lassen. Allerdings klappt es noch nicht einmal beim Minimalbeispiel. (Fenster mit einem Button) Anbei sind die ganzen Dateien und Fehler.
Danke für jede Antwort.

PS: Auch das Code generieren im Designer klappt nicht.

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>331</width>
    <height>46</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <widget class="QPushButton" name="pushButton">
   <property name="geometry">
    <rect>
     <x>20</x>
     <y>10</y>
     <width>75</width>
     <height>23</height>
    </rect>
   </property>
   <property name="text">
    <string>Hallo!!!</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

Code: Alles auswählen

import sys
from PyQt4 import QtGui, uic

dein_ui_file = open("untitled.ui")

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        uic.loadUi(dein_ui_file, self)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    app.exec_()

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Documents and Settings\Michael\My Documents\Python\qt\gui_test.py", line 13, in <module>
    window = MainWindow()
  File "C:\Documents and Settings\Michael\My Documents\Python\qt\gui_test.py", line 9, in __init__
    uic.loadUi(dein_ui_file, self)
  File "C:\Python31\lib\site-packages\PyQt4\uic\__init__.py", line 221, in loadUi
    return DynamicUILoader().loadUi(uifile, baseinstance)
  File "C:\Python31\lib\site-packages\PyQt4\uic\Loader\loader.py", line 71, in loadUi
    return self.parse(filename, basedir)
  File "C:\Python31\lib\site-packages\PyQt4\uic\uiparser.py", line 879, in parse
    actor(elem)
  File "C:\Python31\lib\site-packages\PyQt4\uic\uiparser.py", line 716, in createUserInterface
    self.toplevelWidget = self.createToplevelWidget(cname, wname)
  File "C:\Python31\lib\site-packages\PyQt4\uic\Loader\loader.py", line 56, in createToplevelWidget
    (type(self.toplevelInst), classname)))
TypeError: ('Wrong base class of toplevel widget', (<class '__main__.MainWindow'>, 'QDialog'))
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Die Fehlermeldung hast du aber gelesen?

Zusammen mit der Doku solltest du erkennen, dass du entweder `MainWindow` zu einem `QDialog` machen oder dein UI anpassen musst.
Lasse
User
Beiträge: 112
Registriert: Donnerstag 3. Februar 2011, 18:25

Danke cofi, jetzt funktioniert es!
Antworten