我一直在開發一個使用PyQt5的GUI,並希望包含一個菜單欄。但是,當我去編寫此功能時,我的菜單不會出現。讓我對如何在PyQt5中實現菜單欄的理解失去了興趣,我在網上尋找了一個預先存在的例子。隨着一些調整我制定了以下測試案例:在PyQt5中缺少menuBar
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuBar, QAction, qApp
class Example(QMainWindow):
def __init__(self):
super().__init__()
exitAction = QAction(QIcon('exit.png'), '&Exit', self)
exitAction.triggered.connect(qApp.quit)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&Testmenu')
fileMenu.addAction(exitAction)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
當我運行這一點,但是,Testmenu
是無處可尋。
我也嘗試在使用pyuic5將.ui文件轉換爲可導入的.py文件之前,在QTCreator中創建菜單欄(以及其他我的GUI佈局)。我認爲這會消除我的一些編程錯誤,但菜單欄仍然不會顯示。有什麼想法嗎?
編輯:
進出口運行使用Python 3.5的代碼(蟒蛇4.1)從Jupyter筆記本電腦中,4.1版。我也在使用運行os 10.1l的Macbook,PyQt 5.7和Qt版本5.7.0。
我已經意識到,如果點擊應用程序窗口,然後再點擊回窗口,菜單欄將變得響應 - 有效地不重點和聚焦應用程序。有了這些信息,我意識到我不是第一個注意到這個問題的人(見https://github.com/robotology/yarp/issues/457)。不幸的是,我仍然不確定如何解決這個問題。
[OS X上的QMenuBar](http://doc.qt.io/qt-5/qmenubar.html#qmenubar-on-os-x)。 – ekhumoro
@ekhumoro我不明白這與我在PyQt中的問題有何關係。 – user144153
這幾乎肯定是一個osx特有的問題。你的例子在Linux上運行良好(可能也在Windows上運行)。由於[菜單在osx上的工作方式似乎不同](http://doc.qt.io/qt-5/osx-issues.html#menu-bar),也許你應該正確地*拼出*你期望看到的內容,和你實際得到什麼。也許一些截圖會有所幫助。你也應該說明你正在使用的qt5/pyqt5的確切版本。 – ekhumoro