Tkinter — вставка текста в окна холста

У меня есть холст Tkinter, заполненный текстом и окнами холста или виджетами, созданными с использованием методов create_text и create_window. Виджеты, которые я размещаю на холсте, являются текстовыми виджетами, и я хочу вставить в них текст после того, как они будут созданы и размещены. Я не могу понять, как это сделать, если это вообще возможно. Я понимаю, что вы можете редактировать их после создания с помощью canvas.itemconfig(tagOrId, cnf), но текст не может быть вставлен таким образом. Есть ли этому решение?


person Yngve    schedule 20.01.2013    source источник


Ответы (1)


Во-первых, давайте проясним терминологию: вы не создаете виджеты, вы создаете элементы холста. Существует большая разница между текстовым виджетом Tkinter и текстовым элементом холста.

Есть два способа установить текст текстового элемента холста. Вы можете использовать itemconfigure, чтобы установить атрибут text, и вы можете используйте метод холста insert для вставки текста в текст пункт.

В следующем примере текстовый элемент будет отображать строку «это новый текст»:

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        canvas = tk.Canvas(self, width=800, height=500)
        canvas.pack(side="top", fill="both", expand=True)
        canvas_id = canvas.create_text(10, 10, anchor="nw")

        canvas.itemconfig(canvas_id, text="this is the text")
        canvas.insert(canvas_id, 12, "new ")

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(side="top", fill="both", expand=True)
    root.mainloop()
person Bryan Oakley    schedule 20.01.2013