Как получить текст из текстового виджета Tkinter в записной книжке Jupyter?

#python #python-3.x #tkinter #jupyter-notebook #jupyter

#python #python-3.x #tkinter #jupyter-notebook #jupyter

Вопрос:

У меня есть простой графический код, использующий tkinter в Jupyter :

 from tkinter import *

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

Как я могу получить введенный пользователем текст?
Если я добавляю text.get('1.0', 'end') в конец этого кода, он не работает, также, когда я добавляю text.get('1.0', 'end') в другую ячейку, он не начинает выполняться, пока я не закрою root окно, и после этого выдает ошибку.
Вот так:

 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] не запускается, пока я не закрою Tk() окно, а после закрытия окна и запуска In[2] выдает эту ошибку:

 TclError: invalid command name ".!text"
  

Ответ №1:

Вы не можете взаимодействовать с a tkinter mainloop из ipython интерактивного.
Если вы добавите кнопку «Получить текст», нажатие на нее приведет к извлечению содержимого текстового виджета:

Вот так:

 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()