Bonjour,
je cherche a reproduire l'image ci-dessus avec Tk.
J'ai réussi a le faire avec la fonction create_line() mais j'aimerais le faire aussi avec la fonction create_polygon(). Mon problème étant qu'a chaque fois je n'arrive pas a avoir le même rendu que sur l'image. Soit c'est trop petit soit c'est décalé soit c'est incliné...
Voici mon code pour la fonction create_line() :
Et voici celui de la fonction create_polygon() :
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 #! /usr/bin/env python # -*- coding: utf-8 -*- # description des sept segments LCD segments = \ [ # X1, Y1, X2, Y2 [15, 10, 55, 10], [15, 60, 55, 60], [15, 110, 55, 110], [10, 15, 10, 55], [10, 65, 10, 105], [60, 15, 60, 55], [60, 65, 60, 105], ] # description des lettres en termes de leurs segments description = {'L' : [3, 4, 2], 'P' : [0, 3, 5, 1, 4], 'U' : [3, 4, 5, 6, 2]} # etc... # construction des widgets from Tkinter import * top = Tk() canevas = Canvas(top, height=150, width=325) canevas.pack() # dessin des segments offset = 70 ep = 10 couleur = '"blue"' decal = 20 for K in 'PULL' : les_segments = description [K] for SG in les_segments : S = segments [SG] X1 = repr(S [0] + decal) ; Y1 = repr(S [1]) X2 = repr(S [2] + decal) ; Y2 = repr(S [3]) args = '%s, %s, %s, %s' % (X1, Y1, X2, Y2) args += ', width=%s, fill=%s' % (repr(ep), couleur) eval('canevas.create_line(%s)' % args) decal += offset top.mainloop()
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
46
47
48
49 #! /usr/bin/env python # -*- coding: utf-8 -*- from sys import * # description des sept segments LCD segments = \ [ # X1, Y1, X2, Y2, X3, Y3 [15, 10, 55, 10], [15, 60, 55, 60], [15, 110, 55, 110], [10, 15, 10, 55], [10, 65, 10, 105], [60, 15, 60, 55], [60, 65, 60, 105], ] # description des lettres en termes de leurs segments description = {'L' : [3, 4, 2], 'P' : [0, 3, 5, 1, 4], 'U' : [3, 4, 5, 6, 2], 'D' : [0, 5, 3, 4, 6, 2], 'E' : [0, 3, 2, 1, 4], 'S' : [3, 1, 0, 6, 2], 'C' : [0, 3, 4, 2], 'R' : [0, 6, 3, 5, 1, 4], 'I' : [3, 4], 'P' : [0, 3, 4, 5, 1], 'T' : [0, 3, 4], 'O' : [0, 3, 4, 2, 5, 6], 'N' : [6, 3, 4, 1], 'G' : [0, 3, 4, 2, 6, 1], 'M' : [6, 3, 4, 1, 5]} from Tkinter import * def Affich_LCD(mot) : top = Tk() canevas = Canvas(top, height=150, width=800) canevas.pack() offset = 70 ep = 20 couleur = '"blue"' decal = 20 for K in mot : les_segments = description [K] for SG in les_segments : S = segments [SG] X1 = repr(S [0] + decal) ; Y1 = repr(S [1]) X2 = repr(S [2] + decal) ; Y2 = repr(S [3]) X3 = repr(S [4] + decal) ; Y3 = repr(S [5]) args = '%s, %s, %s, %s, %s, %s' % (X1, Y1, X2, Y2, X3, Y3) args += ', width=%s, fill=%s' % (repr(ep), couleur) eval('canevas.create_polygon(%s)' % args) decal += offset top.mainloop() if len(argv) > 1 : Affich_LCD(argv[1]) else : exit('Mot manquant')
Partager