У меня есть холст Tkinter, заполненный окнами текста и холста или виджетами, созданными с помощью методов create_text
и create_window
. Виджеты, которые я размещаю на холсте, являются текстовыми виджетами, и я хочу вставить в них текст после того, как они будут созданы и размещены. Я не могу понять, как это сделать, если это вообще возможно. Я понимаю, что вы можете редактировать их после создания, используя canvas.itemconfig(tagOrId, cnf)
, но текст не может быть вставлен таким образом. Есть ли этому решение?
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()
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.