tkinter test field, scrolling, threads
Eric Brunel
eric.brunel at N0SP4M.com
Mon Mar 1 04:13:06 EST 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:
--text+threads.py------------------
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)
t.configure(yscrollcommand=vs.set)
root.update()
def thLoop():
i = 0
while 1:
t.insert(END, 'spam %s\n' % i)
i += 1
time.sleep(1)
th = threading.Thread(target=thLoop)
th.setDaemon(1)
th.start()
root.mainloop()
-----------------------------------
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 - http://www.pragmadev.com
More information about the Python-list
mailing list