Текстовый виджет Tkinter - Почему INSERT не работает как текстовый индекс? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть проблема, которая меня раздражает. В настоящее время я создаю небольшое приложение с Tkinter GUI.

. На первой странице мне нужен вводный текст в виде текста или виджета с прокруткой текста. Примеры кода, с которыми я сталкивался, используют ключевые слова, такие как 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 ]

2 голосов
/ 30 марта 2020

Используйте 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() 
1 голос
/ 30 марта 2020

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, он импортировал их, ответ перезагрузки: также хорошо.

0 голосов
/ 30 марта 2020

Вам не нужно использовать константы tkinter. Я лично считаю, что лучше использовать необработанные строки "insert", "end" и т. Д. c. Они более гибкие.

Однако, константы не работают для вас, потому что вы не импортируете их напрямую. Для того, чтобы импортировать tkinter, вам нужно использовать tk.INSERT, et c.

...