IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

mise à jour automatique d'une fenêtre TKinter


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2023
    Messages : 2
    Par défaut mise à jour automatique d'une fenêtre TKinter
    bonjour
    je vous explique mon problème (je ne suis pas un expert de python)
    j'ai une rasberry et une arduino qui communique en CAN
    sur la arduino j'ai deux boutons +/- qui permettent de modifier la valeur et l'envoi sur le CAN
    la rasberry reçois cette trame periodique et récupère cette valeur que j'affiche dans la console -> ca marche
    je voudrai afficher cela dans une fenêtre tkinter ca marche mais qu'une seule fois dés que la fenêtre s'affiche mon programme s'arete et ne viens plus vérifier la réception des messages
    voici mon code actuel


    os.system("sudo /sbin/ip link set can0 up type can bitrate 500000")
    time.sleep(0.1)
    window_tdb=tk.Tk()
    window_tdb.geometry("500x500")
    window_tdb.title("tableau de bord")
    Valeur1=tk.IntVar(value=0)

    try:
    bus = can.interface.Bus(channel='can0', bustype='socketcan')

    except OSError:
    print('Cannot find PiCAN board.')
    exit()

    print('Ready')



    try:
    while True:



    message = bus.recv() # Wait until a message is received.
    ident= message.arbitration_id
    identh=hex(ident)
    print(identh)
    while ident==288: #Button_state 120 en hexa
    print("essai")
    c = '{0:f} {1} {2} '.format(message.timestamp, message.arbitration_id, message.dlc)
    s=''
    for i in range(message.dlc ):
    s += '{0} '.format(message.data[i])
    print(' {}'.format(c+s))
    APC_state=message.data[0]
    Act_button_state=message.data[1]
    Speed_order_lsb=message.data[2]
    Cde_speed=Speed_order_lsb #consigne d'accélération ou de décélération

    if APC_state==1:
    #APC
    if Act_button_state==1:
    apc_state_aff=tk.Label(text="ACC actif")
    apc_state_aff.pack() #APC et ACC
    Speed_order_lsb=message.data[2]
    Cde_ACC=1

    print(Cde_speed)
    print("codespeed")
    print (Speed_order_lsb)

    Valeur1.set(Cde_speed)
    entree=tk.Entry(window_tdb,textvariable=Valeur1)
    label1=tk.Label(window_tdb,textvariable=Valeur1)

    label_consigne=tk.Label(window_tdb,textvariable=Valeur1)

    label_consigne.config(text=Valeur1)
    label1.pack()
    entree.pack()
    window_tdb.mainloop()


    else: #APC mais pas ACC
    Speed_order_lsb=0
    Cde_speed=Speed_order_lsb
    Cde_ACC=1
    msg = can.Message(arbitration_id=0x130,dlc=3, data=[Cde_speed,Cde_ACC,0],is_extended_id=False)
    bus.send(msg)

    else:
    print("Pas APC")

    except KeyboardInterrupt:
    #Catch keyboard interrupt
    os.system("sudo /sbin/ip link set can0 down")
    print('\n\rKeyboard interrtupt')

    except KeyboardInterrupt:
    #Catch keyboard interrupt
    os.system("sudo /sbin/ip link set can0 down")
    print('\n\rKeyboard interrtupt')


    je vous remercie beaucoup pour votre aide

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 083
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 083
    Par défaut
    Bonjour,

    L'indentation en python est primordiale pour comprendre votre code. Veuillez mettre celui-ci dans les balises code prévues à cet effet.

    Si j'ai un conseil à donner : Découper votre code à l'aide de fonctions pour bien démarquer chaque étape de résolution à votre problème. Par exemple, pour recevoir et traiter les messages du bus CAN...

    Si déjà vous vous organisez, peut-être pourrez vous résoudre pas mal de problèmes. Par exemple, pour un appel périodique d'une fonction, on utilise souvent la méthode after.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Citation Envoyé par lmtfotmation Voir le message
    je voudrai afficher cela dans une fenêtre tkinter ca marche mais qu'une seule fois dés que la fenêtre s'affiche mon programme s'arete et ne viens plus vérifier la réception des messages
    La programmation séquentielle (affichage sur la console) et la programmation évènementielle (une interface graphjoiqiue) n'ont rien à voir... et il va falloir ouvrir un tuto. et passer du temps pour apprendre à maîtriser les bases.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2023
    Messages : 2
    Par défaut
    je vous remercie pour votre réponse
    je vais refaire mon code avec des fonctions
    auriez vous un tuto a me proposer pour une programation evenementiel?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Citation Envoyé par lmtfotmation Voir le message
    auriez vous un tuto a me proposer pour une programation evenementiel?
    Si vous ne savez pas programmer le Swinnen est très bien (pour débuter) et contient des exemples proches de ce que vous voulez faire (dans le chapitre sur les interfaces graphiques).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/06/2007, 12h03
  2. Mise à jour automatique d'une page Web
    Par mydev dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/04/2007, 10h58
  3. Réponses: 4
    Dernier message: 09/03/2007, 19h19
  4. [Conception] mise à jour automatique d'une base de donné distante
    Par bipbip2006 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/06/2006, 16h45
  5. Mise à jour automatique d'une table access via un .xls
    Par infratunes dans le forum Access
    Réponses: 4
    Dernier message: 05/04/2006, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo