2015-07-10 40 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