I have problems in creating the Qt menubar using PyQt5 in Mac.
The problem I have is the menubar would show up, but won't react until I unfocus the app (by clicking the other app), then refocus the Qt app again.
Here's my environment:
OS: Sierra 10.12
Python: Python 3.6 from conda
PyQt5: conda default(v5.3.1)
Here's my code (mostly from http://zetcode.com/gui/pyqt5/menustoolbars/):
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QDesktopWidget, QApplication, qApp, QMenuBar
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(800, 600)
self.center()
self.setWindowTitle('Menubar')
exitAction = QAction(' &Exit', self)
exitAction.setShortcut('Ctrl-Q')
exitAction.setToolTip('Exit application')
exitAction.triggered.connect(qApp.quit)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
self.show()
def center(self):
center_point = QDesktopWidget().availableGeometry().center()
frame = self.frameGeometry()
frame.moveCenter(center_point)
self.move(frame.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Example()
sys.exit(app.exec_())
The picture below shows the menu bar is present, but it just won't respond to my click until I select other app and return to my Qt app again.
I've searched many site and found no solution. The closest one is this (https://github.com/robotology/yarp/issues/457) but it doesn't seem to help.
Run your code using pythonw rather than python3. So for example, if your file is called test-gui.py, in the command line terminal, type in:
pythonw test-gui.py
This fixed the error for me. It treats the code as an executable, so the OS isn't confused as to what is being run.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With