[Tutor] nube question...

Lurch erik.kloeppel at forethought.net
Sat Mar 24 05:54:56 CET 2007


Gentlemen,

I don't consider myself a rank beginner (I did take a shower this week), 
but I've been beating my brains out over this for the past week.

I'm writing this GUI app (Tkinter).  Just about everything is done (all 
the nuts,bolts, and the occasional nail.  Now Im trying to code a simple 
status window to let the dumb user (me) know what's going on behind the 
curtain.  The idea is, the application calls the subroutine, the 
subroutine pops open a frame and print some text in it, then returns 
control back to the  main app - leaving the frame/text visible.  Then, 
the app calls the subroutine and *updates* the frame, so you end up with 
a growing list of notices...(basically, I'm working with a variable set 
of files, and it's convenient to know which is being operated on)

I've ripped code from Mark Lutz's book (3rd edition), from Welch's book 
(also 3rd edition), and from around the net. It seems to me that I'm 
missing something obvious when it comes to self.update.  The subroutine 
works as advertised the first time through, but one the window is open 
and the text displays, the app stops - unless I close the window.  Of 
course, then everything works until the NEXT message is displayed.

Sure, I could add a button and work from that, but I don't *WANT* to - 
the idea is a (more or less) continuous flow of information that I can 
scroll through if need be.

As you can see from the sample code below, I'm using the Text widget 
instead of Message.  I had a reason for that when I started this 
nightmare, but I'm not wedded to it.

Any assistance from anybody would be much appreciated.

Thanks in advance!

Erik

-----------------------

from Tkinter import *

data={}
data[4,9]="you are here"
data[4,10]=0
msg=1
x={}

def loop():
    global x
    x[1]=0
    while x[1]<10:
        messages(x)
        print "howdee"
        x[1]=x[1]+1

def messages(msg):
    class MESSAGES(Frame):
        def __init__(self,parent=None,text='', file=None):
            Frame.__init__(self,parent)
            self.pack(expand=YES,fill=BOTH)
            self.makewidgets()
            self.message(text)
            self.update()
   
        def makewidgets(self):
            sbar=Scrollbar(self)
            a=Text(self,relief=RAISED)
            sbar.config(command=a.yview,bg='#fcfcfc')
            a.config(yscrollcommand=sbar.set,bg='#f0f0f0')
            sbar.pack(side=RIGHT,fill=Y)
            a.pack(side=LEFT,expand=YES,fill=BOTH)
            self.a=a
            data[4,10]=1
           
        def message(self,text):
            self.a.insert(END,text)
            self.a.focus()
            return self.a.get('35.2',END+'-1c')

    if __name__=='__main__':
        root=Tk()
        MESSAGES(text=data[4,9]).mainloop()
        return
       
loop()

I've tried this small mod, just now, but it *really* breaks things the 
second time through:


    class MESSAGES(Frame):
        def __init__(self,parent=None,text='', file=None):
            Frame.__init__(self,parent)
            self.pack(expand=YES,fill=BOTH)
            if data[4,10]==0:
                self.makewidgets()
            self.message(text)
            self.update

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070323/0c786de6/attachment.htm 


More information about the Tutor mailing list