INSERT is a variable defined within the module
tkinter and that has as value the string
'insert' . Actually, according to the Python conventions it is a constant (identifier in uppercase should be treated as constants, keeping in mind that the concept of constant does not exist in Python as such.)
When belonging to the module
tkinter and make the import of the form
import tkinter as tk you have to indicate the namespace to which it belongs:
mensaje.insert(tk.INSERT, "Hola Mundo")
The confusion comes because much of tkinter's documentation leaks to the bullfighter what the PEPs and Python's own zen say about the imports. It is very common to be imported in the form
from tkinter import * , this is generally a bad practice, the only possible justification is that they want to overwrite the widgets of tkinter with those of ttk, and even then I do not like:).
from tkinter import * imports all globals to the current namespace, so
mensaje.insert(INSERT, "Hola Mundo") is valid. The problem is that this can cause collisions with other imports or with our own variables, populate the current namespace unnecessarily and end up not knowing clearly where everything comes from.
Python zen says:
- Explicit better than implicit.
- Namespaces are a good idea, let's make more of this.
- Readability counts.
It does not make sense to throw it all away for saving us
std:: in C ++ and its
using namespace std ...). With
tk.INSERT we know who this variable belongs to and never enters into conflict with other variables called
INSERT in our own module or in other imports.
Like the rest of constants as
CENTER , etc can be substituted in the methods where they are used replacing them by their value
mensaje.insert("insert", "Hola Mundo")
tkinter.Text.insert receives as the first argument the index where the text will be inserted, the second is the text itself and the third is a tuple with the labels associated with that text and that is optional. The index can be specified in many ways ( see documentation ). With
tk.INSERT we indicate that the index where it should be inserted is the current position of the cursor in the widget
Finally, indicate that you can not insert text either by code or by standard input if the
Text has the status as