How can I set the text widget contents to the value of a variable in Python/Tkinter?

23,553

Solution 1

I think what you want is this. It will delete all the text and then insert a variable.

def set_input(value):
    text.delete(1.0, "END")
    text.insert("END", value)

It is Python 2.x only. Python 3 requires that "END" be END from the Tk namespace.

Solution 2

def set_value():
    text.insert("end-1c", value)
Share:
23,553

Related videos on Youtube

Jaiden DeChon
Author by

Jaiden DeChon

Updated on July 05, 2022

Comments

  • Jaiden DeChon
    Jaiden DeChon almost 2 years

    I am writing a program to assist with a trivial part of my job that can be automated. My purpose here is to:

    1. Copy and paste a chunk of plain text into a Tkinter text widget

    2. Use that pasted chunk of text as the value of a variable so that the variable can have certain characters pulled and returned down the line.

    I have a functioning little bit of code. For example, here is my text widget and the lines of code I use to get and print its contents:

    textBox = Text(root)
    
    textBox.focus_set()
    
    def get_input():
        print textBox.get(1.0, 'end-1c')
    

    Then I use a button that uses the command get_input. It works when it comes to printing the contents of the widget.

    Now that I know how to properly call on the contents and 'get' them, I would like to learn how I can assign those contents (a string) to the value of a variable.

  • nbro
    nbro almost 9 years
    Insert a variable? What does it mean?
  • VeryAwkwardCake
    VeryAwkwardCake almost 9 years
    In the OP's question, he said he wanted to (I think) set the value of the text. This deletes all the text, then inserts the variable, basically overwriting it.
  • nbro
    nbro almost 9 years
    Still does not make any sense for me.
  • VeryAwkwardCake
    VeryAwkwardCake almost 9 years
    Right, so in Tkinter, you can't directly set the value of a text widget, so you have to delete all the text, then insert the text you want to set it to.
  • Adrian Mole
    Adrian Mole over 4 years
    OK, so it's a useful answer. However, it's the normal 'style' on Stack Overflow to offer an explanation with your answer - even if this is very brief.