Threading and tkinter
Scott David Daniels
Scott.Daniels at Acm.Org
Wed Feb 18 20:02:55 EST 2009
gert wrote:
> After reading the docs and seeing a few examples i think this should
> work ?
> Am I forgetting something here or am I doing something stupid ?
> Anyway I see my yellow screen, that has to count for something :)
>
Try this:
# tdh_show.py
from __future__ import with_statement
import time
import Tkinter
import Tkconstants as TK
import threading
class Weegbrug(threading.Thread):
def __init__(self, frame, var, filename):
self.frame = frame
self.var = var
self.filename = filename
threading.Thread.__init__(self)
def run(self):
with open(self.filename, 'r') as f:
for n, line in enumerate(f):
# the tricky bit:
self.frame.after(100, self.var.set, line.strip())
time.sleep(.5)
def main(filename):
root = Tkinter.Tk()
svar = Tkinter.StringVar(root)
frame = Tkinter.Frame(root, relief=TK.RIDGE, borderwidth=2)
frame.pack(fill=TK.BOTH, expand=1)
label = Tkinter.Label(frame, textvar=svar, bg='yellow',
font=('Helvetica', 16))
label.pack(fill=TK.X, expand=1)
button = Tkinter.Button(frame, text="Exit", command=root.destroy)
button.pack(side=TK.BOTTOM)
reader = Weegbrug(frame, svar, filename)
button = Tkinter.Button(frame, text="Go", command=reader.start)
button.pack(side=TK.BOTTOM)
root.mainloop()
if __name__ == '__main__':
main(__file__)
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list