PyQT5 : Menu contextuel avec QTableWidget()

Signaler
Messages postés
3151
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
1 juin 2020
-
Messages postés
3151
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
1 juin 2020
-
Bonjour.

Je débute en python, plus précisément en interface graphique.

En résumé, j'essaye de reproduire mes scripts AutoIt en python.

En mode console, aucun souci.


J'essaye juste de créer une "listview" avec menu contextuel.
j'arrive, sauf pour ce fameux menu... ^^

Voici un code banal :

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtWidgets import *

monApp=QApplication(sys.argv)
w=QTableWidget()
w.resize(600,600)

w.setWindowTitle("Titre de fenêtre")

w.setRowCount(2)

w.setColumnCount(4)
w.setItem(0,0, QTableWidgetItem("A"))
w.setItem(0,1, QTableWidgetItem("B"))
w.setItem(0,2, QTableWidgetItem("C"))
w.setItem(0,3, QTableWidgetItem("D"))
w.setItem(1,0, QTableWidgetItem("1"))
w.setItem(1,1, QTableWidgetItem("2"))
w.setItem(1,2, QTableWidgetItem("3"))
w.setItem(1,3, QTableWidgetItem("4"))



w.move(10, 100)
w.show()

sys.exit(monApp.exec_())




J'avais trouvé cela : https://www.developpez.net/forums/d1471044/autres-langages/python-zope/gui/pyqt/qtablewidget-menu-contextuels/
Mais rien à avoir. Je me disais qu'il fallait creuser cette piste, sans succès. :/


j'ai créé un script banal justement, pour me focaliser uniquement sur l'essentiel : le menu contextuel.


J'arrive à remplir ce tableau... mais ensuite, nada.


Pouvez-vous m'aiguiller ?


Merci aux personnes qui me permettraient d'en apprendre d'avantage :)

++

2 réponses

Messages postés
91
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020

Hello

il faut que tu ajoute du style la ou tu créé ta table une ligne du genre :
self.TableWigdget.customContextMenuRequested.connect(self.TonMenu)


Et ensuite dans ton TonMenu, quelque chose de ce style :

def TonMenu(self, position):
    
        menu = QMenu()
            menu.addAction(self.tr("Coucou"))
        
        menu.exec_(self.TableWidget.viewport().mapToGlobal(position))
Messages postés
3151
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
1 juin 2020

Bonsoir.


Désolé du temps de réponse, étant en formation, j'ai peu de temps.

Juste pour vous dire que j'utilise tkinter, plus simple pour mon petit cerveau.


Merci en tout cas.

++