Salut,
Pour un projet avec du drag & drop, je dois rajouter des attributs et des méthodes à un ensemble de classes tkinter. Dans l'exemple ci-dessous je rajoute l’attribut dummyVar et la méthode dummyFunc aux classes Tk et Button. La façon de faire avec "exec" étant à mon sens très propice aux critiques, je me demandais si quelqu'un avait quelquechose de plus conventionnel?
A+
Pfeuh
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 class_template = """ class DND(_classname_): def __init__(self, *args, **kwds): _classname_.__init__(self, *args, **kwds) self.dummyVar = None def dummyFunc(self): return self.dummyVar.upper() """ def getDND(classname, *args, **kwds): exec class_template.replace('_classname_', classname) obj = DND(*args, **kwds) return obj if __name__ == "__main__": try:import Tkinter except: import tkinter as Tkinter win = getDND('Tkinter.Tk') bt = getDND('Tkinter.Button', win, text='DND object', width=50, height=3) bt.grid() # test assert win.dummyVar == None win.dummyVar = 'azerty' assert win.dummyFunc() == 'AZERTY' assert bt.dummyVar == None bt.dummyVar = 'qwerty' assert bt.dummyFunc() == 'QWERTY' win.mainloop()
Partager