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

6
Yngve 20 Янв 2013 в 15:21

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()
18
Bryan Oakley 14 Окт 2014 в 18:08