PyQT5 : Menu contextuel avec QTableWidget()

little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 - 19 avril 2018 à 11:34
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 - 29 mai 2018 à 23:06
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

lugdanum Messages postés 108 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 14 novembre 2021
29 avril 2018 à 22:39
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))
0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024
29 mai 2018 à 23:06
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.

++
0
Rejoignez-nous