2015-07-10 42 views
0

我正在學習PyQt並試圖在QMainWindow中放置一個QDialog(以混合佈局)。我只是不明白爲什麼我在MainWindow裏面有2個分開的窗口,而不是我的對話框。PyQt在QMainWindow中創建一個QDialog

TKS提前。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import sys 
from PyQt4 import QtGui, QtCore 

class Btns(QtGui.QDialog): 
    def __init__(self, parent=None): 
     super(Btns, self).__init__(parent) 
     grid = QtGui.QGridLayout(self) 
     self.setLayout(grid) 
     btnv=QtGui.QPushButton("valider") 
     grid.addWidget(btnv, 0,0) 
     btna=QtGui.QPushButton("annuler") 
     grid.addWidget(btna,0,1) 
     btns=QtGui.QPushButton("sortir") 
     grid.addWidget(btns, 1,1) 
     btnr=QtGui.QPushButton("retour") 
     grid.addWidget(btnr, 1,0) 
     self.show() 

class MaFenetre(QtGui.QMainWindow): 
    def __init__(self): 
     super(MaFenetre, self).__init__() 
     self.initMb() 
     self.initBtns() 


    def initMb(self): 
     menu_bar = self.menuBar() 
     file_menu = menu_bar.addMenu('&Fichier') 


    def initBtns(self): 
     btns = Btns(self) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    mf = MaFenetre() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

回答

1

的QDialog的類是基礎類對話窗口。對話窗口是主要用於短期任務和與用戶的簡短通信的頂級窗口。

[來源:Qt文檔上QDialog]

了QDialog應該使一個新的窗口!如果你不想要一個新窗口,不要使用QDialog。考慮改用QWidget