2016-11-25 5 views
0

habe ich erstellt Dateien .ui QtDesigner mit und ich sie in zwei separaten Fenster als Show laden unterPyQt5: Typeerror: ‚Falsche Basisklasse von Toplevel-Widget‘

class MainWindow(QMainWindow): 
    def __init__(self, parent=None): 
     super().__init__() 

     # Set up the user interface from Designer. 
     uic.loadUi("interface/UI/main.ui", self) 

     # Connect up the buttons 
     self.button_classes.clicked.connect(self.open_classes) 

     self.w = [] 

    def open_classes(self): 
     self.w.append(PopupWindow(self)) 
     self.w[-1].show() 


class PopupWindow(QMainWindow): 
    def __init__(self, parent=None): 
     super().__init__() 

     # Set up the user interface from Designer. 
     uic.loadUi("interface/UI/newclass.ui", self) 

Wenn ich den Code in PyCharm zulaufen Debug-Modus, der folgende Fehler auftritt, aber dies nicht der Fall, wenn der Code ausgeführt wird normalerweise

TypeError: ('Wrong base class of toplevel widget', (<class 'controllers.GUI.PopupWindow'>, 'QDialog')) 
+0

Erhalten Sie eine Fehlermeldung, wenn Sie es in der Konsole/terminal/cmd.exe/powershell ausführen? fügen Sie vollständige Fehlermeldung in Frage. – furas

+0

@furas Wenn ich den Code normal ausführen, gibt es keine Fehler, aber wenn ich den Code im Debug-Modus in PyCharm ausführen, erhalte ich einen Type Error, den ich der Frage – Ronikos

+1

hinzugefügt habe, haben Sie die Nachricht "Falsche Basisklasse von Toplevel-Widget ', (,' QDialog ')) 'so denke ich, dass Sie' QDialog' erwarten, um ein zweites Fenster zu erstellen, aber Sie benutzen 'QMainWindow' in der Klasse PopupWindowONE (QMainWindow): ' – furas

Antwort

1

Sie haben QDialog in Nachricht 'Wrong base class of toplevel widget', (<class 'controllers.GUI.NewClassWindow'>, 'QDialog')) so halte ich es für Sie QDialog erwartet verwenden zweites Fenster zu erstellen, aber Sie verwenden QMainWindow in class PopupWindowONE(QMainWindow):