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.