2024-05-16 05:21:04 发布
网友
我想在PyQt4中创建一个下拉列表,当一个元素被选中时执行一个操作。此外,有些选项可能在某个时间不可用。他们应该还在名单上,但已经变灰了。在
我尝试将菜单附加到QToolButton,但我甚至看不到菜单。 怎么做的?在
谢谢! 内森
QToolButton有ToolButtonPopupMode枚举,该枚举控制它如何处理菜单和多个操作。当设置为QToolButton::MenuButtonPopup时,它将显示具有菜单选项的按钮的典型箭头。在
QToolButton::MenuButtonPopup
要使用它,请设置适当的弹出模式,然后可以使用setMenu向QToolButton添加菜单,也可以使用addAction添加操作。然后QToolButton应该像预期的那样响应菜单上的单击,不管是操作生成的还是实际的QMenu。在
使用弹出窗口。您可以使用QMenu.exec_方法在任何地方触发弹出菜单,并传递要显示菜单的点。在
QMenu.exec_
我创建了一个按钮来记住它被点击的位置,并将其连接到创建和显示弹出窗口的方法。在
class MemoryButton(QPushButton): def __init__(self, *args, **kw): QPushButton.__init__(self, *args, **kw) self.last_mouse_pos = None def mousePressEvent(self, event): self.last_mouse_pos = event.pos() QPushButton.mousePressEvent(self, event) def mouseReleaseEvent(self, event): self.last_mouse_pos = event.pos() QPushButton.mouseReleaseEvent(self, event) def get_last_pos(self): if self.last_mouse_pos: return self.mapToGlobal(self.last_mouse_pos) else: return None button = MemoryButton("Click Me!") def popup_menu(): popup = QMenu() menu = popup.addMenu("Do Action") def _action(check): print "Action Clicked!" menu.addAction("Action").triggered.connect(_action) popup.exec_(button.get_last_pos()) button.clicked.connect(popup_menu)
QToolButton有ToolButtonPopupMode枚举,该枚举控制它如何处理菜单和多个操作。当设置为
QToolButton::MenuButtonPopup
时,它将显示具有菜单选项的按钮的典型箭头。在要使用它,请设置适当的弹出模式,然后可以使用setMenu向QToolButton添加菜单,也可以使用addAction添加操作。然后QToolButton应该像预期的那样响应菜单上的单击,不管是操作生成的还是实际的QMenu。在
使用弹出窗口。您可以使用
QMenu.exec_
方法在任何地方触发弹出菜单,并传递要显示菜单的点。在我创建了一个按钮来记住它被点击的位置,并将其连接到创建和显示弹出窗口的方法。在
相关问题 更多 >
编程相关推荐