from PyQt4 import QtCore, QtGui import sys class Window(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QMainWindow.__init__(self, parent) exitAction = QtGui.QAction(QtGui.QIcon('icon/icon-exit.png'), u'Выйти', self) exitAction.setShortcut('Ctrl+Q') self.connect(exitAction, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()')) aboutAction = QtGui.QAction(QtGui.QIcon('icon/icon-info-sign.png'), u'О программе', self) menubar = self.menuBar() fileMenu = menubar.addMenu(u'Файл') fileMenu.addAction(exitAction) infoMenu = menubar.addMenu(u'Справка') infoMenu.addAction(aboutAction) lineEdit = QtGui.QLineEdit() form = QtGui.QFormLayout() form.addRow(u"&Название:", lineEdit) form.addRow(u"&Описание:", lineEdit) self.setLayout(form) app = QtGui.QApplication(sys.argv) window = Window() window.setWindowTitle('Test') window.setGeometry(0, 0, 350, 400) app.setWindowIcon(QtGui.QIcon("/icon/icon-progr.png")) window.show() sys.exit(app.exec_())
При запуске говорит следующие QWidget::setLayout: Attempting to set QLayout “” on Window “”, which already has a layout
Успел прочитать, что вся загвоздка, что я наследую класс QtGui.QMainWindow. Как решить данную проблему? Кстати если попытаться без макета просто разместить в окне виджет ввода, то он не отображается. Объясните пожалуйста тонкости работы с классом QMainWindow.