On Thu, Dec 8, 2016 at 12:00 PM, Alan L Dickman <adick...@us.ibm.com> wrote:
>
> Thanks in advance for any help! I'm just learning Python and Tkinter. Can 
> anyone suggest why this program does not insert 'some text' into text box t1 
> when the start button is clicked? No errors are thrown when I run the program 
> in PyCharm

I think your issue is that your list "t1" is not doing anything for
you.  Inside your __init__ method, "t1" and "self.t1" are not
referring to the same thing.  Your Text widget is bound to "t1", not
the list.  I am a relative newbie in tkinter, but apparently "0" is
not an allowed index.  "insert" inserts before the given index, which
in your case needs to be "END".

>
> from tkinter import *
>
> class Window(Frame):
>    t1 = []

I don't see what this is doing.  It will not be the same as t1 in your
method below.

>    def __init__(self, master=None)
>        Frame.__init__(self, master)
>        self.master = master
>        self.master.title("My Title")
>        StartButton = Button(self, text="Start", command=self.start, 
> bg='#006ba6', fg="white")
>        StartButton.grid(row=0, columnspan=3, sticky=(N, S, W, E))
>        Label(self, text="Your Name").grid(row=1, sticky=(N, S, W, E))
>        t1 = Text(self, height=2)
>        t1.grid(row=1, column=1, sticky=(N, S, W, E))
>        self.t1.insert( 0, 'some text')

This needs to drop the "self" and use an appropriate index.  It should
be:  "t1.insert(END, 'some text')".

>        quitButton = Button(self, text="Quit", command=self.client_quit, 
> bg='#006ba6', fg="white")
>        quitButton.grid(row=5, columnspan=3, sticky=(N, S, W, E))
>        self.grid(sticky=(N, S, W, E))
>
>    def start(self):
>        self.t1.insert(0, 'some text')
>
>    def client_quit(self):
>        exit()
>
> root = Tk()
> root.geometry()
> app = Window(root)
> root.mainloop()
>

HTH!

boB
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to