py qt QPushButton设置添加一个下拉菜单,如何设置下拉菜单的位置
时间: 2024-02-18 11:01:16 浏览: 139
ButtonMenu_qt下拉_excellentox7_qt界面_QT_basissh5_
要在PyQt中给QPushButton添加一个下拉菜单,可以使用QMenu类创建一个菜单,然后将其与QPushButton相关联。下面是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QMenu
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
button = QPushButton("Click me", self)
menu = QMenu(self)
menu.addAction("Action 1")
menu.addAction("Action 2")
button.setMenu(menu)
self.setCentralWidget(button)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例中,我们创建了一个QPushButton和一个QMenu,并使用`setMenu()`方法将菜单与按钮相关联。此外,我们还将QPushButton设置为主窗口的中央部件。
要设置下拉菜单的位置,可以使用QMenu的`popup()`方法。该方法需要一个QPoint参数,表示下拉菜单的左上角位置。例如,要将下拉菜单的左上角放在QPushButton的左下角处,可以使用以下代码:
```python
menu.popup(button.mapToGlobal(button.rect().bottomLeft()))
```
其中,`mapToGlobal()`方法将QPushButton的左下角坐标映射为全局坐标,`rect()`方法返回QPushButton的矩形区域,`bottomLeft()`方法返回矩形区域的左下角坐标。
注意,这种方法需要在菜单被显示之前调用,因此可以在QPushButton的`clicked`信号中调用`popup()`方法。
阅读全文