私はPyQTを使って小さなアプリケーションを書いています。私は通常のオプション( "ファイル"、 "編集"、 "オプション"など)を含むアプリケーションの上部にメニューバーを作成しようとしていますが、QMainWindowクラスに追加しようとするとツールバーが表示されません。私は周りを見回しましたが、私が間違っていることは私には明らかではありません。 QToolbar
を作成する代わりにQMainWindow.menuBar()
メソッドを使用しようとしましたが、これを行うと、バーは完全に見えなくなります。下のコードを使用すると、たとえ空であっても空の棒が表示されます。以下のコードは、この問題の最小の例です。私は、行動が現れるように何を変えなければならないかを知りたい。QMainWindowでメニューバーを作成するには
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QBrush
from PyQt5.QtWidgets import QMainWindow, QGraphicsScene, QToolBar, QMenu, QAction, QGraphicsView, QApplication
class GraphWindow(QMainWindow):
def __init__(self):
super().__init__()
self.scene = QGraphicsScene()
# a grid foreground
self.scene.setBackgroundBrush(QBrush(Qt.lightGray, Qt.CrossPattern))
self.grid = True
# Create upper toolbar with menu options
tb = QToolBar()
menu = QMenu()
db_action = QAction("Open file")
db_action.setStatusTip("Select a file to use as a database")
db_action.triggered.connect(self.open_new_db)
menu.addAction(db_action)
tb.addWidget(menu)
tb.setAllowedAreas(Qt.TopToolBarArea)
tb.setFloatable(False)
tb.setMovable(False)
self.addToolBar(tb)
self.statusBar().showMessage("Ready")
# Demonstrate the results from the input.
graphics = QGraphicsView(self.scene)
self.setCentralWidget(graphics)
self.showFullScreen()
def open_new_db(self):
pass
def keyPressEvent(self, e):
# Currently, we respond to a press of the Escape key by closing the program.
if e.key() == Qt.Key_Escape:
self.close()
app = QApplication(sys.argv)
gr = GraphWindow()
sys.exit(app.exec_())
使用しているOSバージョンとQTバージョンは何ですか?これは(https://github.com/robotology/yarp/issues/521)[バグ](https://bugs.launchpad.net/ubuntu/+source/appmenu-qt5/+bug/1307619)になります。 ) –
私は基本的なOSを使います0.4.1 LokiとPyQT 5.9 – Thalamus