在PyQt5中对齐弹出窗口小部件

苏雷什·库马尔

关于此事,我已经看到了许多关于SO的答复,但不是专门针对QMenu和QToolButton的。在将弹出窗口小部件与按钮的右侧对齐方面,一些指针将不胜感激。这是我正在努力的基本代码。

import sys
from PyQt5.QtWidgets import *


class test(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(200, 100)
        layout = QHBoxLayout(self)
        label = QLabel('Testing QToolButton Popup')
        toolbutton = QToolButton()
        toolbutton.setPopupMode(QToolButton.InstantPopup)

        widget = QWidget()
        widgetLayout = QHBoxLayout(widget)
        widgetLabel = QLabel('Popup Text')
        widgetSpinbox = QSpinBox()
        widgetLayout.addWidget(widgetLabel)
        widgetLayout.addWidget(widgetSpinbox)

        widgetAction = QWidgetAction(toolbutton)
        widgetAction.setDefaultWidget(widget)

        widgetMenu = QMenu(toolbutton)
        widgetMenu.addAction(widgetAction)
        toolbutton.setMenu(widgetMenu)

        layout.addWidget(label)
        layout.addWidget(toolbutton)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = test()
    win.show()
    sys.exit(app.exec_())

结果看起来像这样:

弹出图片

永乐

Qt开发人员认为默认位置是正确的,因此,如果要修改对齐方式,必须移动QMenu,如下所示:

import sys
from PyQt5.QtCore import QPoint
from PyQt5.QtWidgets import (
    QApplication,
    QHBoxLayout,
    QLabel,
    QMenu,
    QSpinBox,
    QToolButton,
    QWidgetAction,
    QWidget,
)


class Menu(QMenu):
    def showEvent(self, event):
        if self.isVisible():
            button = self.parentWidget()
            if button is not None:
                pos = button.mapToGlobal(button.rect().bottomRight())
                self.move(pos - self.rect().topRight())
        super().showEvent(event)


class Test(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(200, 100)
        layout = QHBoxLayout(self)
        label = QLabel("Testing QToolButton Popup")
        toolbutton = QToolButton(popupMode=QToolButton.InstantPopup)

        widgetLabel = QLabel("Popup Text")
        widgetSpinbox = QSpinBox()

        widget = QWidget()
        widgetLayout = QHBoxLayout(widget)
        widgetLayout.addWidget(widgetLabel)
        widgetLayout.addWidget(widgetSpinbox)

        widgetAction = QWidgetAction(toolbutton)
        widgetAction.setDefaultWidget(widget)

        widgetMenu = Menu(toolbutton)
        widgetMenu.addAction(widgetAction)
        toolbutton.setMenu(widgetMenu)

        layout.addWidget(label)
        layout.addWidget(toolbutton)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = Test()
    win.show()
    sys.exit(app.exec_())

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PyQt5中隐藏小部件后,如何设置较小的窗口大小?

来自分类Dev

在PyQt5中刷新窗口中的窗口小部件时是否需要重新加载整个窗口?

来自分类Dev

PyQt5弹出窗口

来自分类Dev

在pyqt5小部件中更新matplotlib

来自分类Dev

透明框架pyqt5中的透明小部件

来自分类Dev

在pyqt5小部件中更新matplotlib

来自分类Dev

如何让 PyQt5 中的小部件填满屏幕?

来自分类Dev

PyQt5中小部件的动态定位?

来自分类Dev

Python PyQT5 在 mainWindow 中打开小部件

来自分类Dev

在 PyQt5 中更改小部件的高亮颜色

来自分类Dev

如何使用PyQt5将打开的cv图像(numpy数组)放入主窗口的中央小部件中?

来自分类Dev

PyQt5:如何将子窗口小部件移到主窗口?

来自分类Dev

Pyqt5 addStretch 在小部件之间?

来自分类Dev

pyqt5方法关闭或删除窗口小部件并根据命令再次进行设置

来自分类Dev

PyQt5:使用不透明的小部件创建透明窗口

来自分类Dev

如何编写Python代码pyqt5在主窗口上附加2个小部件

来自分类Dev

PyQt5 DatePicker弹出窗口

来自分类Dev

调整窗口大小时,PyQt5仅调整一个子窗口小部件的大小

来自分类Dev

在单元测试CI中模拟PyQt5 QMessageBox小部件中的按钮单击

来自分类Dev

布局中的PyQt5 QTreeWidget显示了小部件外部的一列

来自分类Dev

如何在PyQt5的标签小部件中添加堆叠式布局?

来自分类Dev

在PyQt5中删除小部件时如何删除空白

来自分类Dev

在 PyQt5 中修改 Qgroupbox 的边框颜色而不修改其内部小部件的边框

来自分类Dev

在 ListWidget 中膨胀自定义小部件 - PyQt5

来自分类Dev

如何在pyqt5中创建小部件以显示谷歌地图

来自分类Dev

PyQt5 QMainWindow不显示中央小部件

来自分类Dev

在 PyQt5 上添加/删除 QSlider 小部件

来自分类Dev

Pyqt5 等到小部件可见

来自分类Dev

在 WordPress 中自动覆盖带有小部件的弹出窗口?

Related 相关文章

  1. 1

    在PyQt5中隐藏小部件后,如何设置较小的窗口大小?

  2. 2

    在PyQt5中刷新窗口中的窗口小部件时是否需要重新加载整个窗口?

  3. 3

    PyQt5弹出窗口

  4. 4

    在pyqt5小部件中更新matplotlib

  5. 5

    透明框架pyqt5中的透明小部件

  6. 6

    在pyqt5小部件中更新matplotlib

  7. 7

    如何让 PyQt5 中的小部件填满屏幕?

  8. 8

    PyQt5中小部件的动态定位?

  9. 9

    Python PyQT5 在 mainWindow 中打开小部件

  10. 10

    在 PyQt5 中更改小部件的高亮颜色

  11. 11

    如何使用PyQt5将打开的cv图像(numpy数组)放入主窗口的中央小部件中?

  12. 12

    PyQt5:如何将子窗口小部件移到主窗口?

  13. 13

    Pyqt5 addStretch 在小部件之间?

  14. 14

    pyqt5方法关闭或删除窗口小部件并根据命令再次进行设置

  15. 15

    PyQt5:使用不透明的小部件创建透明窗口

  16. 16

    如何编写Python代码pyqt5在主窗口上附加2个小部件

  17. 17

    PyQt5 DatePicker弹出窗口

  18. 18

    调整窗口大小时,PyQt5仅调整一个子窗口小部件的大小

  19. 19

    在单元测试CI中模拟PyQt5 QMessageBox小部件中的按钮单击

  20. 20

    布局中的PyQt5 QTreeWidget显示了小部件外部的一列

  21. 21

    如何在PyQt5的标签小部件中添加堆叠式布局?

  22. 22

    在PyQt5中删除小部件时如何删除空白

  23. 23

    在 PyQt5 中修改 Qgroupbox 的边框颜色而不修改其内部小部件的边框

  24. 24

    在 ListWidget 中膨胀自定义小部件 - PyQt5

  25. 25

    如何在pyqt5中创建小部件以显示谷歌地图

  26. 26

    PyQt5 QMainWindow不显示中央小部件

  27. 27

    在 PyQt5 上添加/删除 QSlider 小部件

  28. 28

    Pyqt5 等到小部件可见

  29. 29

    在 WordPress 中自动覆盖带有小部件的弹出窗口?

热门标签

归档