gpt4 book ai didi

python - 如何隐藏QMainWindow中空的centralwidget

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:55 24 4
gpt4 key购买 nike

我希望创建一个只有一个菜单栏的 QMainWindow,然后每个菜单操作都可以触发打开一个 QDialog。但是,我似乎无法让 QMainWindow 隐藏空白区域。我试图隐藏centralwidget,并尝试使用它的属性,但没有什么能让我摆脱空白区域,如下所示-

如何隐藏灰色区域?

这就是我想要实现的目标

我看到的唯一“黑客”是将 QMainWindow 的大小调整为(即,21)并将菜单栏的 setGeometry 调整为相同的(即,21),然后设置窗口的固定大小。有没有更干净的方法来解决这个问题?



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:

from PyQt5 import QtCore, QtGui, QtWidgets


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)

menubar = QtWidgets.QMenuBar()
menubar.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

menu_Available_View = QtWidgets.QMenu(menubar)
menuatest = QtWidgets.QMenu(menu_Available_View)

actiontest = QtWidgets.QAction(menubar)
menuatest.addAction(actiontest)
menu_Available_View.addSeparator()
menu_Available_View.addAction(menuatest.menuAction())
menubar.addAction(menu_Available_View.menuAction())
menu_Available_View.setTitle("&Available View")
menuatest.setTitle("atest")
actiontest.setText("test")

menubar.setFixedHeight(menubar.sizeHint().height())
menubar.resize(500, menubar.height())

menubar.show()

sys.exit(app.exec_())

关于python - 如何隐藏QMainWindow中空的centralwidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59598248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com