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 :

Simple console Tkinter


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 17
    Par défaut Simple console Tkinter
    Bonjour a tous et merci pour votre forum.
    Je débute avec python ...
    Je voudrais faire une petite appli qui affiche "serial_port.readline()"
    J'utilise la lib serial pour dialoguer avec une carte électronique.
    A terme je voudrais que mon appli affiche les RX du port com, les stockes dans un fichier .log, et prenne des décision en fonction.
    Mais commençons d'abord par l'affichage.
    A force de tuto et autre cours sur le web je suis parvenu a pondre un bout de code fonctionnel (manque la scrollbar auto) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    import serial
    import threading
    from Tkinter import *
     
    ########################
     
    form1=Tk()
    form1.title('form1')
    form1.resizable(width=FALSE, height=FALSE)
    form1.geometry('235x154+100+100')
     
     
     
    richTextBox1=Text(font = '{MS Sans Serif} 10')
    richTextBox1.place(relx=0.05, rely=0.07, relwidth=0.89, relheight=0.59)
     
    scrollbar = Scrollbar(richTextBox1)
    scrollbar.pack( side = RIGHT, fill=Y )
     
     
    ########################
     
    serial_port = serial.Serial('COM6')
    serial_port.baudrate=9600
     
    ########################
     
    def form1mainloop():
    	form1.mainloop()
     
    ########################
     
    def scan():
    	richTextBox1.insert(END,serial_port.readline())
    	form1.after(100,scan)
     
    ########################
     
    form1.after(100,scan)
    form1.mainloop()
    serial_port.close()
    Mais voila : j'ai commancer a vouloir le trasnformer en classe mais je bloque total apres ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    import serial
    import threading
    import Tkinter
     
    ########################
     
    serial_port = serial.Serial('COM6')
    serial_port.baudrate=9600
     
     
    class alex_app(Tkinter.Tk):
        def __init__(self,parent):
            Tkinter.Tk.__init__(self,parent)
            self.parent = parent
            self.initialize()
     
        def initialize(self):
            self.grid()      
     
            self.richTextBox1=Tkinter.Text(self)
            self.richTextBox1.grid(column=0,row=0,sticky='EW')
     
            self.labelVariable = Tkinter.StringVar()
            label = Tkinter.Label(self,textvariable=self.labelVariable,
                                  anchor="w",fg="white",bg="blue")
            label.grid(column=0,row=1,columnspan=2,sticky='EW')
     
            self.grid_columnconfigure(0,weight=1)
            self.resizable(False,False)
     
     
        def read_port_com(self):
            #c'est ici que je voudrais appeler ma fonction toute les x ms
            #ou avoir un event si rx port com ?
     
     
    ########################
     
     
    if __name__ == "__main__":
        app = alex_app(None)
        app.title('my application')
        app.mainloop()
        serial_port.close()
    Est-ce bien utile pour moi de passer par une classe ? pourquoi ?
    Un petit coup de main pour me debloquer et pour la scrollbar ?
    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 759
    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 759
    Par défaut
    Salut,

    Les classes sont avant tout des fabriques d'objets semblables.

    Tkinter contient déjà ces "fabriques": Tk, Text ,...
    Il suffit de configurer des instances de ces objets pour répondre aux besoins d'une (petite) application.

    Les classes sont des outils pour organiser son application. "organiser" fait sens lorsque l'application devra réaliser de nombreuses fonctionnalités. Dans ce cas, il faudra écrire et gérer des milliers de lignes de codes: packages, modules, classes permettront de "partitionner" ces milliers de lignes en entités qu'on pourra développer, tester, ... indépendamment.

    Les classes permettent de donner du corps aux abstractions de votre conception. Quelles sont elles? Application? La Text box qui affiche les nouvelles informations lues sur le port série? Le port série?
    A vous de voir!
    Découper/Décomposer le problème en classes suppose définir les relations entre les différentes classes, leurs interfaces,...
    Dans votre cas, une fois la partie graphique construite, çà se contente d'ajouter ce qui est lu sur le port série au Widget Text.
    Vous pouvez faire cela avec des classes pour le fun de l'utilisation des classes mais côté "utilité", ce n'est pas encore assez gros/compliqué pour que le mériter.

    Pour ce qui est des scrollbars, lisez le tutoriel d'effbot sur le sujet.

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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 17
    Par défaut
    Merci pour votre réponse.
    C'est ce que je penser: ma "petite appli" peut se passer de classes!
    Disons que je voulais m'exercer et m'essayer aux classes a cette occasion.
    Merci pour le lien je vais potasser ça

Discussions similaires

  1. [Python 3.X] Ouverture d'une simple fenêtre Tkinter avec Pyzo sur Mac
    Par Leila_A dans le forum Tkinter
    Réponses: 4
    Dernier message: 13/02/2015, 07h49
  2. console standard sur Tkinter
    Par ____22 dans le forum Tkinter
    Réponses: 2
    Dernier message: 05/07/2010, 11h08
  3. fenetre TKinter et console
    Par ____22 dans le forum Tkinter
    Réponses: 2
    Dernier message: 01/07/2010, 19h26
  4. Aide pour tkinter/console application
    Par _yak_ dans le forum Tkinter
    Réponses: 6
    Dernier message: 30/06/2010, 14h44
  5. Problème avec un décompte simple sous Tkinter
    Par bigboss560 dans le forum Tkinter
    Réponses: 2
    Dernier message: 21/02/2010, 13h10

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