저는 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