QMenuBar отсутствует в QMainWindow в Windows 8.1

Я создаю QMainWindow с PyQt4 на Windows 8.1. Тем не менее, по умолчанию QMenuBar не отображается после добавления к нему меню. Вот мой SSCCE:

import sys
from PyQt4.Qt import *    

class NoMenuBar(QMainWindow):

    def __init__(self):
        super(NoMenuBar, self).__init__()

        self.__initUI()

    def __initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('No Menu Bar')
        self.__configureMenuBar()

    def __configureMenuBar(self):
        self.menuBar = self.menuBar()
        self.menuBar.addMenu(QMenu('File'))
        self.menuBar.addMenu(QMenu("Settings"))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = NoMenuBar()
    window.show()
    sys.exit(app.exec_()) 

1 ответ

Решение

QMenu необходимо передать родительское окно в качестве аргумента (который self в этом случае).

def __configureMenuBar(self):
    self.menuBar = self.menuBar()
    self.menuBar.setLayoutDirection(Qt.LeftToRight)
    filemenu = QMenu('File', self)
    self.menuBar.addMenu(filemenu)
    filemenu.addAction('Open')
    filemenu.addAction('Quit', self.close)
Другие вопросы по тегам