【问题标题】:Why is this widget positioned on top of the menu-bar?为什么这个小部件位于菜单栏的顶部?
【发布时间】:2018-07-21 09:16:46
【问题描述】:

当我运行以下示例时,我希望 QListWidget 位于菜单栏下方,但实际上它位于菜单栏上方。菜单栏仍然存在,可以通过使用 Alt-F 快捷方式打开它来确认。

import sys
from PySide.QtGui import *

app = QApplication(sys.argv)

class MainWindow(QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()
        menubar = self.menuBar()

        exitAction = QAction(QIcon.fromTheme('appication-exit'), '&Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit Application')
        exitAction.triggered.connect(self.close)

        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        QListWidget(self)

    def run(self):
        self.show()
        app.exec_()

MainWindow().run()

结果:

我无法通过使用QVBoxLayout 来解决这个问题(我尝试将菜单栏添加到QVBoxLayout 并且不添加它)。

我正在运行 pyqt 4.11.4、qt 4.8.7、pyside 1.2.4 和 Python 3.5。

关于如何正确定位 QListWidget 的任何想法?

【问题讨论】:

  • 太棒了!如果您将其作为答案,我可以将其标记为已回答。
  • 不是关于这个问题。 PyQt 和 PySide 是用于相同目的的模块。您只需选择一个安装。对于这个应用程序,python 和 PySide 就足够了。 pyqt 和 qt 是不必要的。

标签: python layout pyqt pyside


【解决方案1】:

您可以:

self.setCentralWidget(QListWidget(self))

或者:

widget = QWidget(self)
layout = QVBoxLayout(widget)
layout.addWidget(QListWidget(self))
self.setCentralWidget(widget)

后者可能更好,因为您无疑会想要添加更多小部件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多