2016-04-25 17 views
3

Wahrscheinlich eine dumme Noob Frage, aber hier ist es (Parti Beispiel):PyQt Hauptfenster gegen Dialog

ich einige grundlegende Code habe eine QDialog zu erstellen. in der Praxis wird dies gut funktioniert, und ich habe etwas, das ein Pyqtgraph Fenster, Lasten und Grunddaten erzeugt, etc:

import sys 
from PyQt4 import QtGui 

#class Window(QtGui.QMainWindow): 
class Window(QtGui.QDialog): 

    def __init__(self): 
     super(Window, self).__init__() 

     # Button to load data 
     self.LoadButton = QtGui.QPushButton('Load Data') 
     # Button connected to `plot` method 
     self.PlotButton = QtGui.QPushButton('Plot') 

     # set the layout 
     layout = QtGui.QVBoxLayout() 
     layout.addWidget(self.LoadButton) 
     layout.addWidget(self.PlotButton) 

     self.setLayout(layout) 

     self.setGeometry(100,100,500,300) 
     self.setWindowTitle("UI Testing") 


if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 

    main = Window() 
    main.show() 

    sys.exit(app.exec_()) 

Allerdings Ich mag würde dies als QMainWindow erstellen (einfach maximieren zu erhalten, in der Nähe, etc Tasten für jetzt), aber wenn ich die Klassendefinition zu:

class Window(QtGui.QMainWindow): 

ändere ich bekomme ein leeres Hauptfenster, wenn ich den Code ausführen. Die einfache Frage ist also: Was muss ich tun, damit das Layout wie in QDialog in einem QMainWindow angezeigt wird?

Mit besten Grüßen,

Ben

Antwort

2

Vom doc:

Hinweis: ein Hauptfenster ohne zentralen Widget erstellen wird nicht unterstützt. Sie müssen ein zentrales Widget haben, auch wenn es nur ein Platzhalter ist.

so das zentrale Widget sollte up erstellt und festgelegt werden:

def __init__(self): 
     super(Window, self).__init__() 

     # Button to load data 
     self.LoadButton = QtGui.QPushButton('Load Data') 
     # Button connected to `plot` method 
     self.PlotButton = QtGui.QPushButton('Plot') 

     # set the layout 
     layout = QtGui.QVBoxLayout() 
     layout.addWidget(self.LoadButton) 
     layout.addWidget(self.PlotButton) 

     # setup the central widget 
     centralWidget = QtGui.QWidget(self) 
     self.setCentralWidget(centralWidget) 
     centralWidget.setLayout(layout) 

     self.setGeometry(100,100,500,300) 
     self.setWindowTitle("UI Testing") 
+0

Perfect - gesunde Erinnerung an meinen Teil zu RTD ... :-) – BMichell