Не отображается QMenuBar PyQt5

Проблема такая. Написал текстовый редактор на PyQt5, писал на MacOs, там всё работает отлично, но на линуксе и виндовс не отображается QMenuBarтекст курсивом.

Заранее спасибо!

class CodeEditor(QPlainTextEdit, QMainWindow):

    def __init__(self):
        super().__init__()
        super(CodeEditor, self).__init__()
        al = self.CheckConfig()
        # Var
        self.file_name = ''
        self.text_size = 16
        self.mode_type = 0
        self.setFont(QFont("Times New Roman", self.text_size))
        self.setLineWrapMode(QPlainTextEdit.NoWrap)
        self.currentLineNumber = True
        self.currentLineColor = self.palette().alternateBase()
        self.setTabStopDistance(16)
        self.setTabStopWidth(16)


        # self.setWindowIcon(QIcon('icon.png'))
        
        self.setWindowTitle("Code Editor Lite | untitled | Normal Mode")

        self.cursorPositionChanged.connect(self.highligtCurrentLine)
        self.number_bar = self.NumberBar(self)

        # Новый файл
        self.newfile = QAction('&Новый файл (Ctrl+N)', self)
        self.newfile.setToolTip('Ctrl+N')
        self.newfile.triggered.connect(self.NewfileAction)
        self.newfile_sc = QShortcut(QKeySequence("Ctrl+N"), self)
        self.newfile_sc.activated.connect(self.NewfileAction)
        # Открыть файл
        self.openfile = QAction('&Открыть файл (Ctrl+O)', self)
        self.openfile.setStatusTip('Ctrl+O')
        self.openfile.triggered.connect(self.OpenfileAction)
        self.openfile_sc=QShortcut(QKeySequence("Ctrl+O"), self)
        self.openfile_sc.activated.connect(self.OpenfileAction)
        # Сохранить как
        self.saveAsfile = QAction('&Сохранить как... (Shift+Ctrl+S)', self)
        self.saveAsfile.setStatusTip("Shit+Ctrl+S")
        self.saveAsfile.triggered.connect(self.SaveAsfileAction)
        self.saveAsfile_sc = QShortcut(QKeySequence.StandardKey.SaveAs, self)
        self.saveAsfile_sc.activated.connect(self.SaveAsfileAction)
        # Сохранить
        self.savefile = QAction('&Сохранить (Ctrl+S)', self)
        self.savefile.setStatusTip('Ctrl+S')
        self.savefile.triggered.connect(self.SavefileAction)
        self.savefile_sc = QShortcut(QKeySequence("Ctrl+S"), self)
        self.savefile_sc.activated.connect(self.SavefileAction)
        # Выход
        self.exitfrom = QAction('&Выход (Ctrl+Q)', self)
        self.exitfrom.setStatusTip('Ctrl+Q')
        self.exitfrom.triggered.connect(self.ExitAction)
        self.exitfrom_sc = QShortcut(QKeySequence("Ctrl+Q"), self)
        self.exitfrom_sc.activated.connect(self.ExitAction)
        # Увеличение
        self.plus = QAction('&Увеличить (Ctrl+Shift+Plus)', self)
        self.plus.setStatusTip("Ctrl+Shift+Plus")
        self.plus.triggered.connect(self.PlusAction)
        self.plus_sc = QShortcut(QKeySequence.StandardKey.ZoomIn, self)
        self.plus_sc.activated.connect(self.PlusAction)
        # Уменьшение
        self.minus = QAction("&Уменьшить (Ctrl+Minus)", self)
        self.minus.setStatusTip("Ctrl+Minus")
        self.minus.triggered.connect(self.MinusAction)
        self.minus_sc = QShortcut(QKeySequence.StandardKey.ZoomOut, self)
        self.minus_sc.activated.connect(self.MinusAction)
        # Помощь
        self.helptext = QAction('&Справка', self)
        self.helptext.triggered.connect(self.HelpAction)
        # Зашифрованный/Обычный режим
        self.crypt = QAction('&В зашифрованный режим', self)
        self.crypt.triggered.connect(self.CryptAction)

        # Меню
        self.menu = QMenuBar()
        # self.menu.setNativeMenuBar(False)
        # Меню "Файл"
        self.filemenu = self.menu.addMenu('&Файл')
        self.filemenu.addAction(self.newfile)
        self.filemenu.addAction(self.openfile)
        self.filemenu.addAction(self.savefile)
        self.filemenu.addAction(self.saveAsfile)
        self.filemenu.addAction(self.exitfrom)
        # Меню "Специальное"
        self.specialmenu = self.menu.addMenu('&Специальное')
        self.specialmenu.addAction(self.crypt)
        # Меню "Вид"
        self.viewmenu = self.menu.addMenu('&Вид')
        self.viewmenu.addAction(self.plus)
        self.viewmenu.addAction(self.minus)
        # Меню "Помощь"
        self.helpmenu = self.menu.addMenu('&Помощь')
        self.helpmenu.addAction(self.helptext)

Ответы (1 шт):

Автор решения: S. Nick

Не используйте множественное наследование, если хорошо не понимаете что вы делаете.

Ознакомьтесь пожалуйста Qt Main Window Framework https://doc.qt.io/qt-5/qmainwindow.html#qt-main-window-framework

Создание главного окна без центрального виджета не поддерживается. У вас должен быть центральный виджет, даже если это просто заполнитель.

void QMainWindow::setMenuBar(QMenuBar *menuBar)

Устанавливает строку меню для главного окна на menuBar. Примечание: QMainWindow становится владельцем указателя menuBar и удаляет его в соответствующее время.

import sys
from PyQt5.Qt import *


#class CodeEditor(QPlainTextEdit, QMainWindow):
class CodeEditor(QMainWindow):                                                     # !!!
    def __init__(self):
        super().__init__()
        super(CodeEditor, self).__init__()
#?        al = self.CheckConfig()

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
        self.plainTextEdit = QPlainTextEdit()
        self.plainTextEdit.setTabStopDistance(16)
        self.plainTextEdit.setLineWrapMode(QPlainTextEdit.NoWrap)
        self.plainTextEdit.appendPlainText(
            'Класс QPlainTextEdit предоставляет виджет, который используется '
            'для редактирования и отображения простого текста.'
        )
        self.plainTextEdit.appendHtml('<h2 style="color: red;">Hello World</h2>')
        
        self.setCentralWidget(self.plainTextEdit)                                  # !!!
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        # Var
        self.file_name = ''
        self.text_size = 16
        self.mode_type = 0
        self.setFont(QFont("Times New Roman", self.text_size))
#        self.setLineWrapMode(QPlainTextEdit.NoWrap)
        self.currentLineNumber = True
        self.currentLineColor = self.palette().alternateBase()
#        self.setTabStopDistance(16)
#        self.setTabStopWidth(16)                                    # Это свойство устарело.


        self.setWindowIcon(QIcon('Ok.png'))
        self.setWindowTitle("Code Editor Lite | untitled | Normal Mode")

#?        self.cursorPositionChanged.connect(self.highligtCurrentLine)
#?        self.number_bar = self.NumberBar(self)

        # Новый файл
        self.newfile = QAction('&Новый файл (Ctrl+N)', self)
        self.newfile.setToolTip('Ctrl+N')
#        self.newfile.triggered.connect(self.NewfileAction)
        self.newfile_sc = QShortcut(QKeySequence("Ctrl+N"), self)
#        self.newfile_sc.activated.connect(self.NewfileAction)
        # Открыть файл
        self.openfile = QAction('&Открыть файл (Ctrl+O)', self)
        self.openfile.setStatusTip('Ctrl+O')
#        self.openfile.triggered.connect(self.OpenfileAction)
        self.openfile_sc=QShortcut(QKeySequence("Ctrl+O"), self)
#        self.openfile_sc.activated.connect(self.OpenfileAction)
        # Сохранить как
        self.saveAsfile = QAction('&Сохранить как... (Shift+Ctrl+S)', self)
        self.saveAsfile.setStatusTip("Shit+Ctrl+S")
#        self.saveAsfile.triggered.connect(self.SaveAsfileAction)
        self.saveAsfile_sc = QShortcut(QKeySequence.StandardKey.SaveAs, self)
#        self.saveAsfile_sc.activated.connect(self.SaveAsfileAction)
        # Сохранить
        self.savefile = QAction('&Сохранить (Ctrl+S)', self)
        self.savefile.setStatusTip('Ctrl+S')
#        self.savefile.triggered.connect(self.SavefileAction)
        self.savefile_sc = QShortcut(QKeySequence("Ctrl+S"), self)
#        self.savefile_sc.activated.connect(self.SavefileAction)
        # Выход
        self.exitfrom = QAction('&Выход (Ctrl+Q)', self)
        self.exitfrom.setStatusTip('Ctrl+Q')
#        self.exitfrom.triggered.connect(self.ExitAction)
        self.exitfrom_sc = QShortcut(QKeySequence("Ctrl+Q"), self)
#        self.exitfrom_sc.activated.connect(self.ExitAction)
        # Увеличение
        self.plus = QAction('&Увеличить (Ctrl+Shift+Plus)', self)
        self.plus.setStatusTip("Ctrl+Shift+Plus")
#        self.plus.triggered.connect(self.PlusAction)
        self.plus_sc = QShortcut(QKeySequence.StandardKey.ZoomIn, self)
#        self.plus_sc.activated.connect(self.PlusAction)
        # Уменьшение
        self.minus = QAction("&Уменьшить (Ctrl+Minus)", self)
        self.minus.setStatusTip("Ctrl+Minus")
#        self.minus.triggered.connect(self.MinusAction)
        self.minus_sc = QShortcut(QKeySequence.StandardKey.ZoomOut, self)
#        self.minus_sc.activated.connect(self.MinusAction)
        # Помощь
        self.helptext = QAction('&Справка', self)
#        self.helptext.triggered.connect(self.HelpAction)
        # Зашифрованный/Обычный режим
        self.crypt = QAction('&В зашифрованный режим', self)
#        self.crypt.triggered.connect(self.CryptAction)

        # Меню
        self.menu = QMenuBar()
        # self.menu.setNativeMenuBar(False)
        # Меню "Файл"
        self.filemenu = self.menu.addMenu('&Файл')
        self.filemenu.addAction(self.newfile)
        self.filemenu.addAction(self.openfile)
        self.filemenu.addAction(self.savefile)
        self.filemenu.addAction(self.saveAsfile)
        self.filemenu.addAction(self.exitfrom)
        # Меню "Специальное"
        self.specialmenu = self.menu.addMenu('&Специальное')
        self.specialmenu.addAction(self.crypt)
        # Меню "Вид"
        self.viewmenu = self.menu.addMenu('&Вид')
        self.viewmenu.addAction(self.plus)
        self.viewmenu.addAction(self.minus)
        # Меню "Помощь"
        self.helpmenu = self.menu.addMenu('&Помощь')
        self.helpmenu.addAction(self.helptext)

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv         
        self.setMenuBar(self.menu)                                                # !!!
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = CodeEditor()
    window.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка