Текстовый виджет Tkinter - почему INSERT не работает как текстовый индекс?
У меня проблема, которая меня раздражает. В настоящее время я создаю небольшое приложение с графическим интерфейсом Tkinter.
На первой странице мне нужен вводный текст в виде текста или виджета с прокручиваемым текстом. В приведенных мною примерах кода используются такие ключевые слова, как INSERT, CURRENT и END для индексации внутри виджета.
Я буквально скопировал вставленный ниже код в свой редактор, но он не распознает INSERT (выдает ошибку: "NameError: имя 'INSERT' не определено"):
import tkinter as tk
from tkinter import scrolledtext
window = tk.Tk()
window.title("test of scrolledtext and INSERT method")
window.geometry('350x200')
txt = scrolledtext.ScrolledText(window,width=40,height=10)
txt.insert(INSERT,'You text goes here')
txt.grid(column=0,row=0)
window.mainloop()
Я могу заставить код работать, если я изменю [INSERT] на [1.0], но меня очень расстраивает то, что я не могу заставить INSERT работать, поскольку я видел это в каждом примере кода, с которым я сталкивался.
3 ответа
Вам не нужно использовать константы tkinter. Я лично считаю, что лучше использовать необработанные строки "insert", "end" и т. Д. Они более гибкие.
Однако причина того, что константы не работают для вас, заключается в том, что вы не импортируете их напрямую. Как вы импортируете tkinter, вам нужно использоватьtk.INSERT
, так далее.
Использовать tk.INSERT
вместо только INSERT
. Показан полный код.
import tkinter as tk
from tkinter import scrolledtext
window = tk.Tk()
window.title("test of scrolledtext and INSERT method")
window.geometry('350x200')
txt = scrolledtext.ScrolledText(window,width=40,height=10)
txt.insert(tk.INSERT,'You text goes here')
txt.grid(column=0,row=0)
window.mainloop()
INSERT
нельзя использовать напрямую.
Вы можете использовать его в прошлом только потому, что вы использовали это в прошлом:
from tkinter import * # this is not a good practice
INSERT
,CURRENT
а также END
находятся в tkinter.constants
.Теперь в вашем коде вы их даже не импортировали.
Если вы хотите их использовать, вы можете использовать
from tkinter.constants import * # not recommended
...
txt.insert(INSERT,'You text goes here')
Или
from tkinter import constants
...
txt.insert(constants.INSERT,'You text goes here') # recommend
Если вы не хотите их импортировать, вы также можете использовать:
txt.insert("insert",'You text goes here')
Изменить: я нашел в исходном коде tkinter, он их импортировал, ответ на перезагрузку также в порядке.