Tkinter - Inserting text into canvas windows

2024/9/24 12:27:45

I have a Tkinter canvas populated with text and canvas windows, or widgets, created using the create_text and create_window methods. The widgets I place on the canvas are text widgets, and I want to insert text into them after they are created and placed. I can't figure out how to do this, if it's even possible. I realise you can edit them after creation using canvas.itemconfig(tagOrId, cnf), but text can't be inserted that way. Is there a solution to this?

Answer

First, lets get the terminology straight: you aren't creating widgets, you're creating canvas items. There's a big difference between a Tkinter text widget and a canvas text item.

There are two ways to set the text of a canvas text item. You can use itemconfigure to set the text attribute, and you can use the insert method of the canvas to insert text in the text item.

In the following example, the text item will show the string "this is the new text":

import Tkinter as tkclass 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()
https://en.xdnf.cn/q/71702.html

Related Q&A

How to run nosetests without showing of my matplotlibs graph?

I try to run my test without any messages displaying from my main program. I only want verbose messages from nosetests to display.For example: nosetests -v --nologcaptureAll of my printout messages fro…

Variable name to string in Python

I have written some code in Python and I would like to save some of the variables into files having the name of the variable. The following code:variableName1 = 3.14 variableName2 = 1.09 save_variable_…

In Python, how to print FULL ISO 8601 timestamp, including current timezone

I need to print the FULL local date/time in ISO 8601 format, including the local timezone info, eg:2007-04-05T12:30:00.0000-02:00I can use datetime.isoformat() to print it, if I have the right tzinfo o…

TextVariable not working

I am trying to get the Text out of an Entry widget in Tkinter. It works with Entry1.get(), but it does not work using textvariableWhat am I doing wrong ? from Tkinter import * master = Tk() v = String…

Is there a Python module to get next runtime from a crontab-style time definition?

Im writing a dashboard application and I need a way to figure out how long an item is "valid", i.e. when should it have been superseded by a new value (its possible to have an error such that…

Django Generic Relations error: cannot resolve keyword content_object into field

Im using Djangos Generic Relations to define Vote model for Question and Answer models. Here is my vote model:models.pyclass Vote(models.Model):user_voted = models.ForeignKey(MyUser)is_upvote = models.…

How to benchmark unit tests in Python without adding any code

I have a Python project with a bunch of tests that have already been implemented, and Id like to begin benchmarking them so I can compare performance of the code, servers, etc over time. Locating the …

Digit recognition with Tesseract OCR and python

I use Tesseract and python to read digits (from a energy meter). Everything works well except for the number "1". Tesseract can not read the "1" Digit.This is the picture I send t…

Pycharm not recognizing packages even when __init__.py exits

This is my directory structure--> ProjectDirectory-->__init__.py--> BaseDirectory-->__init__.py--> AnotherBaseDirectory-->__init__.py-->program.pyinside program.pyWhen i give impor…

Scrapy is following and scraping non-allowed links

I have a CrawlSpider set up to following certain links and scrape a news magazine where the links to each issue follow the following URL scheme:http://example.com/YYYY/DDDD/index.htm where YYYY is the …