Bonjour,
Je rencontre toujours le même problème lorsque je créé une interface,
je n'arrive pas à structurer le code, je ne sais pas trop comment gérer mes callbacks
et j'en arrive rapidement à imbriquer des classes dans tout les sens
Ce que je fais usuellement, c'est créer une classe par widget, tout mes widgets sont ensuite regroupés dans une classe "Interface"
Et je me retrouve à faire des "inheritance" :
ou des classes imbriquées :
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 #!/usr/bin/python3 # -*- coding: utf-8 -*- import tkinter as tk import tkinter.ttk as ttk class Graphique: def __init__(self, root): self.canvas = tk.Canvas(root, width=150, height=100) self.canvas.pack() def montrer_texte(self): self.canvas.create_text(30, 30, text = "mon_texte") class MontrerTexte: def __init__(self, root): btn = tk.Button(root, text="Montrer texte", command=lambda: self.montrer_texte()) btn.pack() class MainGui(Graphique, ChoisirTexte): def __init__(self, root): Graphique.__init__(self, root) MontrerTexte.__init__(self, root) root=tk.Tk() MainGui(root) root.mainloop()
Je trouve ces constructions plutôt bancales,
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 #!/usr/bin/python3 # -*- coding: utf-8 -*- import tkinter as tk import tkinter.ttk as ttk class Graphique: def __init__(self, root): self.canvas = tk.Canvas(root, width=150, height=100) self.canvas.pack() def montrer_texte(self): self.canvas.create_text(30, 30, text = "mon_texte") class MontrerTexte: def __init__(self, outer, root): btn = tk.Button(root, text="Montrer texte", command=lambda: outer.graph.montrer_texte()) btn.pack() class MainGui: def __init__(self, root): self.graph = Graphique(root) bouton = MontrerTexte(self, root) root=tk.Tk() MainGui(root) root.mainloop()
je ne vois pas trop quelle structure adopter, des conseils?
Partager