Résolue

Gestion de la souris avec PySide

# Résolution d'erreurs # PySide

Bonjour,
je ne trouve pas comment acceder à la souris (pour la rendre inactive pendant certain processus).
J'ai bien trouvé une piste avec "curses" et curses.curs_set(0) mais cela ne marche pas (je suis sous windows.)
j'ai l'erreur

 File "c:/Users/HP/OneDrive/Ma_Formation_Python/Exemples de code/Appli-PySide6/Button.py", line 2, in <module>
    import curses
  File "C:\Python37\lib\curses\__init__.py", line 13, in <module>
    from _curses import *
ModuleNotFoundError: No module named '_curses'

Merci de votre aide.

Thibault houdon

Mentor

Salut Jean-Marc,

Quand tu veux dire rendre la souris inactive, tu veux dire empêcher l'utilisateur de cliquer, masquer le curseur, empêcher le mouvement.. ?

Bonjour

  • empecher de cliquer

  • masquer le curseur ou lui donner une autre forme (sablier...

Merci

Thibault houdon

Mentor

Bonjour Jean-Marc,

Tu peux utiliser la méthode setCursor pour changer le curseur et ensuite dans dans la classe Qt tu as différents curseurs que tu peux utiliser, tu peux trouver tous les curseurs disponibles ici : https://doc.qt.io/qtforpython/PySide6/QtCore/Qt.html#PySide6.QtCore.PySide6.QtCore.Qt.CursorShape

Ils sont dans le module PySide6.QtCore.Qt.

Je te mets un petit exemple de code pour que ce soit plus clair :

import sys
from PySide6 import QtCore
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QMainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        # Changer le curseur pour un sablier
        self.setWaitCursor()

    def setWaitCursor(self):
        # Définir le curseur comme étant une montre (wait cursor)
        self.setCursor(Qt.WaitCursor)

        # Désactiver le wait cursor après un certain délai (optionnel)
        # Par exemple, après 5 secondes (5000 ms)
        QtCore.QTimer.singleShot(5000, self.restoreCursor)

    def restoreCursor(self):
        # Restaurer le curseur par défaut
        self.setCursor(Qt.ArrowCursor)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

Merci
C'est exactement ce que je cherchais
Pyside est vraiment très complet mais c'est un peu compliqué pour chercher.

Bien Cordialement

JMarc

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.