我希望创建一个只有一个菜单栏的QMainWindow,然后每个菜单操作都可以触发打开一个QDialog。然而,我似乎无法让QMainWindow隐藏这些空白。我试图隐藏centralwidget,并玩弄它的属性,但没有任何东西可以让我摆脱下面所示的空白空间-
如何隐藏灰色区域
这就是我想要实现的目标
我看到的唯一“黑客”是将QMainWindow调整为(w.e,21),并将菜单栏的几何设置为相同(w.e,21),然后将窗口设置为FixedSize。有没有更干净的方法
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(500, 21)
self.centralwidget = QtWidgets.QWidget(MainWindow)
# self.centralwidget.setEnabled(False)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
self.centralwidget.setSizePolicy(sizePolicy)
self.centralwidget.setMaximumSize(QtCore.QSize(0, 0))
self.centralwidget.setObjectName("centralwidget")
self.menubar = QtWidgets.QMenuBar(MainWindow)
MainWindow.setCentralWidget(self.menubar)
self.menubar.setGeometry(QtCore.QRect(0, 0, 500, 21))
self.menubar.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.menubar.setObjectName("menubar")
self.menu_Available_View = QtWidgets.QMenu(self.menubar)
self.menu_Available_View.setObjectName("menu_Available_View")
self.menuatest = QtWidgets.QMenu(self.menu_Available_View)
self.menuatest.setObjectName("menuatest")
MainWindow.setMenuBar(self.menubar)
self.actiontest = QtWidgets.QAction(MainWindow)
self.actiontest.setObjectName("actiontest")
self.menuatest.addAction(self.actiontest)
self.menu_Available_View.addSeparator()
self.menu_Available_View.addAction(self.menuatest.menuAction())
self.menubar.addAction(self.menu_Available_View.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.menu_Available_View.setTitle(_translate("MainWindow", "&Available View"))
self.menuatest.setTitle(_translate("MainWindow", "atest"))
self.actiontest.setText(_translate("MainWindow", "test"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
如果您只想与QMenuBar交互,则无需使用QMainWindow:
相关问题 更多 >
编程相关推荐