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" :
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()
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, 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 trouve ces constructions plutôt bancales,
je ne vois pas trop quelle structure adopter, des conseils?