Utilisez un popup. Vous pouvez déclencher un popup n'importe où, en utilisant la méthode QMenu.exec_
et en passant le point auquel vous voulez que le menu apparaisse.
J'ai créé un bouton qui me rappelait où il avait été cliqué, et je l'ai connecté à la méthode pour créer et afficher la fenêtre contextuelle.
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)
Voulez-vous vraiment une liste déroulante avec une action effectuée sur la sélection, ou voulez-vous un bouton qui a un menu dessus? –
Je veux vraiment qu'une action soit effectuée sur la sélection. – Nathan