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