Search code examples
pythonpyqtpysidepyside6

Why is my QPushButton overlapping the QMenuBar


I have this QMenuBar and I wanted to put a button on the screen and for some reason it just overlaps the menubar...?

enter image description here

Here is my code:

class LeagueHelperWindow(QMainWindow):
    def __init__(self) -> None:
        super().__init__()
        self.setWindowTitle('League Helper')
        self.load_saved_settings()
        self.setup_menu_bar()

        self.vbox = QVBoxLayout(self)
        self.setLayout(self.vbox)
        
        self.button = QPushButton('Test', self)
        self.vbox.addWidget(self.button)
        self.vbox.addStretch()

        self.setLayout(self.vbox)
        
    def setup_menu_bar(self):
        menu_bar = QMenuBar(self)

        file_menu = menu_bar.addMenu('File')
        exit_action = file_menu.addAction('Exit')
        exit_action.triggered.connect(self.close)

        view_menu = menu_bar.addMenu('View')
        logs_action = view_menu.addAction('Logs')
        logs_action.setCheckable(True)
        logs_action.triggered.connect(self.display_log_window)

        help_menu = menu_bar.addMenu('Help')
        about_action = help_menu.addAction('About')
        about_action.triggered.connect(about_app)

        self.setMenuBar(menu_bar)

How do I fix this?


Solution

  • Your window has no central Widget

    Add this to your constructor.

    self.central = QWidget()
    self.setCentralWidget(self.central)
    

    and change these lines

    self.setLayout(self.vbox)
    

    to

    
    self.central.setLayout(self.vbox)