Bonjour,
Soit:
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
import tkinter as tk
 
class A:
    def __init__(self, root):
        root.bind('<Key>', self.do)
        self.attr = tk.StringVar()
 
    def do(self, evt):
        """ attribut sera dispo qu'après l'usage de return"""
        if evt.keycode == 36: 
            self.attr.set("patati patata")
 
root = tk.Tk()
a = A(root)
 
def tr(*arg):
    """ Quand l'attribut est disponible je le récupère/affiche """
    print('ok', a.attr.get())
 
a.attr.trace_add('write', tr)
root.mainloop()
J'aimerais implémenter le code de façon à l'appeler à la manière d'un input().
(En d'autres termes, j'aimerais que initialisation de la classe A ne rende la main que quand l'attribut est disponible)
Résultat souhaité:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
import tkinter as tk
class A:
    ...
root = tk.Tk()
a = A(root) 
print(a) #retournant "patati patata"
root.mainloop()
J'ai essayé en vain plusieurs approches, mais je tourne en rond...
Comment dois-je m'y prendre?
(Du moins si je ne cours pas après une chimère)