PyQT вызывает QDialog форму QMainWidget - PullRequest
2 голосов
/ 16 апреля 2011

Мне нужно открыть несколько диалогов в моем приложении MainWidget.Когда я вызываю функцию exec_ (), диалоговое окно появляется, но ничего не имеет.Я даже не могу установить название.Вот некоторый пример проблемы:

import sys
from PyQt4 import QtGui, QtCore


class prceditor(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle('PRC Editor')
        self.resize(100,100)

class Glmainwnd(QtGui.QMainWindow):
    def __init__(self):
        super(Glmainwnd, self).__init__()
        # Resize Window
        screen = QtGui.QDesktopWidget().screenGeometry()
        self.resize(screen.width()/2, screen.height()/2)
        size = self.geometry()
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)
        self.setWindowTitle('uniPRCsim')
        self.setWindowIcon(QtGui.QIcon('icons/uniPRCsim.png'))
        self.statusBar().showMessage('Ready')

        menubar = self.menuBar()

        #Exit from APP
        exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
        exit.setShortcut('Ctrl+Q')
        exit.setStatusTip('Exit application')
        self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
        dlg = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'DLG', self)
        dlg.setShortcut('Ctrl+D')
        dlg.setStatusTip('Call Dlg')
        self.connect(dlg, QtCore.SIGNAL('triggered()'), self.mdlg)

        file = menubar.addMenu('&File')
        file.addAction(dlg)
        file.addSeparator()
        file.addAction(exit)

    def mdlg(self):
        p=prceditor(self)
        p.exec_()


if __name__ == '__main__' :
    app = QtGui.QApplication(sys.argv)
    main = Glmainwnd()
    main.show()
    sys.exit(app.exec_())

Если я вызываю тот же код для диалога из диалогового виджета, он работает.Спасибо за помощь!

1 Ответ

2 голосов
/ 11 мая 2011

Ваша проблема - опечатка. Вы ввели переопределенный конструктор класса prceditor только с одним подчеркиванием после init вместо двух подчеркиваний. Переопределенная версия никогда не выполнялась.

...