Partage
  • Partager sur Facebook
  • Partager sur Twitter

PyQt5 QpushButton disconnect

    27 novembre 2023 à 13:32:33

    Bonjour, je suis en train de réaliser le jeu "Démineur".
    j'ai réussi avec le clic gauche (btn.clicked.connect)
    a faire apparaitre ou pas une mine (Switch avec le clic gauche).
    ainsi que le clic droit avec
    btn.setContextMenuPolicy(Qt.CustomContextMenu)
    btn.customContextMenuRequested.connect
    a faire apparaitre un drapeau (Switch avec le clic droit).

    Ma question est :

    si j'ai fait un clic droit, il affiche un drapeau, je souhaite qu’il soit impossible de faire un clic gauche tant qu'il y a le drapeau, si je refait un clic droite : cela enlève le drapeau et on peux de nouveau faire un clic gauche

    et si j'ai fait un clic gauche, il affiche une mine ou un chiffre ou rien, je souhaite qu’il soit impossible de faire un clic droit.

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2023 à 16:42:47

      Salut,

      Un clic sur quoi ?? un QLabel, Un QPushButton...

      je suppose que ton démineur regroupe des QPushbutton.

      tu peux peut-être utiliser la méthode :

      btn.setCheckable(True)

      avec le contrôle :

      but.isChecked()




      -
      Edité par Garkam 27 novembre 2023 à 16:53:12

      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2023 à 17:16:25

        et tester l'image affichée sur le bouton avant d'autoriser ou pas l'action du clic gauche

        un truc du genre (pour montrer le principe, code non fonctionnel)

        def bouton_clic_gauche:
           if bouton.image != imageFlag or bouton.isEnabled():
              #code du clic gauche, si l'image n'est pas le drapeau
              bouton.setEnabled(False) # on désactive le bouton
        
        • Partager sur Facebook
        • Partager sur Twitter
          28 novembre 2023 à 8:34:32

          merci pour vos réponse

          Garkam ce sont bien des QPushButton comme indiquer dans le titre de ce forum.

          le setEnabled va désactivé le bouton, mais moi si je clic avec le bouton droit de la souris, je veux que ça bloque seulement le clic gauche.

          un exemple : je pense qu'il y a une mine sur cette case, je fait un clic droit cela met un drapeau (ça m'interdit le clic gauche) et plus tard je m'aperçoit que je me suis trompé je fait un clic droit pour enlever le drapeau puis je peux maintenant faire un clic gauche.

          jeu démineur online : https://www.google.com/search?client=firefox-b-d&q=jeu+demineur

          merci d'avance.

          • Partager sur Facebook
          • Partager sur Twitter
            29 novembre 2023 à 12:05:45

            on n'est pas obligé de mettre le SetEnabled selon l'état de la case et on peut aussi le réactiver de la même façon.
            Tu peux te créer une variable associée à l'état du bouton et l'utiliser pour déterminer les actions possibles ou pas.
            • Partager sur Facebook
            • Partager sur Twitter

            PyQt5 QpushButton disconnect

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown