2015-07-10 4 views
0

Я изучаю PyQt и пытался поставить QDialog внутри QMainWindow (для смешивания макетов). Я просто не понимаю, почему у меня есть 2 отдельных окна вместо моего диалога внутри MainWindow.PyQt Создание QDialog внутри QMainWindow

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.

Смежные вопросы