tkinter test field, scrolling, threads

Eric Brunel eric.brunel at
Mon Mar 1 10:13:06 CET 2004

Bob Greschke wrote:
> I have a program where the user pushes a button, a "starting" message is
> .inserted to a text field with an associated scroll bar, a thread is started
> that inserts a "working..." message on to the end of the text field until
> stopped, or until the loop finishes.  The loop sleeps for about 3 seconds
> every time through (I'm just prototyping at this point).  The mainloop just
> waits for the user to hit the same button again which will set a flag and
> cause the thread to terminate early, otherwise it doesn't have anything to
> do.  update()'s and update_idle_tasks() get called anytime anything is
> written to the text field.  Everything works fine until the text field fills
> up then the program just freezes with no errors on the console window.  If I
> change the starting of a thread to a regular function call then everything
> works fine.
> What is going wrong?

If you do not post any code, it will be difficult for anyone to help you. 
Knowing your Python and tcl/tk versions and your platform will help too.

I know that there are some issues regarding Tkinter and threads, but the 
following code works:
from Tkinter import *
import time, threading

root = Tk()
t = Text(root, width=8, height=4)
t.pack(side=LEFT, fill=BOTH)
vs = Scrollbar(root, orient=VERTICAL, command=t.yview)
vs.pack(side=RIGHT, fill=Y)

def thLoop():
   i = 0
   while 1:
     t.insert(END, 'spam %s\n' % i)
     i += 1

th = threading.Thread(target=thLoop)


Tested with Python 2.1.1, tcl/tk 8.3.2 on Linux Mandrake 8.0
- Eric Brunel <eric dot brunel at pragmadev dot com> -
PragmaDev : Real Time Software Development Tools -

More information about the Python-list mailing list