J'ai un code GUI simple utilisant tkinter dans Jupyter :

from tkinter import *

root = Tk()
text = Text(root, width = 40, height = 15)
text.pack()
root.mainloop()

Comment puis-je obtenir le texte saisi par l'utilisateur ?
Si j'ajoute text.get('1.0', 'end') à la fin de ce code, cela ne fonctionne pas, même lorsque j'ajoute text.get('1.0', 'end') à une autre cellule, il ne commence à s'exécuter que lorsque je ferme la fenêtre root et après qu'il donne une erreur.
Comme ça:

In[1]: from tkinter import *
       root = Tk()
       text = Text(root, width = 40, height = 15)
       text.pack()
       root.mainloop()
In[2]: text.get('1.0', 'end')

In[2] ne commence pas à s'exécuter tant que je ne ferme pas la fenêtre Tk(), et après avoir fermé la fenêtre et commencé à exécuter In[2], cela donne cette erreur :

TclError: invalid command name ".!text"
1
Meysam 17 nov. 2020 à 12:57

1 réponse

Meilleure réponse

Vous ne pouvez pas interagir avec un tkinter mainloop depuis l'interactif ipython.
Si vous ajoutez un bouton d'obtention de texte, appuyez dessus pour récupérer le contenu du widget texte :

Comme ça:

import tkinter as tk
root = tk.Tk()
text = tk.Text(root, width=40, height = 15)
text.pack()
tk.Button(root, text='get text', command=lambda: print(text.get('1.0', tk.END))).pack()
root.mainloop()
3
Reblochon Masque 17 nov. 2020 à 10:15