8768 sujets

Développement web côté serveur, CMS

Hello happy taxe payers (très à propos en ces temps de gilets jaunes !)

Suivant des avis recueillis ici le mois dernier, je me mets au Python pour mon projet de télécommande avec un PC et un Raspberry. Je programme actuellement le PC : j'ai besoin de trois genres d'objets : des interrupteurs (tout ou rien), des ascenseurs ("analogiques" pour le moteur et la direction) et des afficheurs, pour telle ou telle information.

J'en suis à tenter d'écrire la classe Inter : il a deux états, "ouvert" et "fermé", auxquels correspondent visuellement deux images différentes. On provoque le basculement en cliquant sur l'image.

Voici où j'en suis :
from tkinter import *
from pillow import *
BoutonFerme=tkinter.PhotoImage("./Images/InterF.jpg")
BoutonOuvert=tkinter.PhotoImage("./Images/InterO.jpg")

class Inter:
    
    def __init__(self, nom, larg, haut, parent):
    """ Un Inter a un nom, une largeur, une hauteur et un parent.
        Il a aussi un état, ouvert ou fermé, que l'on change en cliquant"""
        self.BoutonO=open(BoutonOuvert)
        self.BoutonO=resize_contain(BoutonO,larg,hauf)
        self.BoutonF=open(BoutonFerme)
        self.BoutonF=resize_contain(BoutonF,larg,hauf)
        self.Etat="Ouvert"
        self.frame=Frame(Parent, width=larg,height=haut,bd=1,image=BoutonO)
        self.frame.bind("<Button-1>", bascule)
        
    def bascule():
        if

et là, je sèche : la routine "bascule" a besoin de "self" pour accéder à l'Etat, mais (si j'ai bien compris) l'appel de "bascule" dans le bind n'a pas droit à un argument. Comment on résout ça ?

Merci de votre aide...

AMIcalement.
Pour pouvoir identifier la case ou l'on clique, c'est pas trés compliquer, encore faut il prendre le problème dans le bon sens.

J'explique une manière de faire le morpion (enfin c'est comme ca que je ferais, de facon trés simple)
1 ° je compose ma grille avec 9 rectangles dans un Canvas. (blanc avec contour noir par exemple)
il ont donc tous une ID attribué automatiquement par Tkinter
2° je défini une méthode (voir méthode associé au canvas) qui récupère l'id de la figure se trouvant sous la clic de souris
3° je défini une méthode qui calcul le centre de la figure dont l'Id a été récupéré par la méthode ci haut
4° je defini une méthode dessinnant sur ma case une autre figure dont le centre correspond au centre calculé ci dessus.

on peut faire bien plus simple, et plus performant mais le principe de départ pour moi c'est la construction de la grille.

Bon courage
Modifié par Julien Royer (06 Jan 2019 - 19:14)