Problems displaying Tkinter objects in Window NT

Rony rony.steelandt at bucodi.com
Wed Jan 9 03:42:47 EST 2002


Has nothing to do with NT.

What you need is something like :

root = Tk()
It=PhoneDrawingMaker()
root.mainloop()

at the end of your programm to start the event loop of TK


"star7fire" <star7fire at yahoo.com> wrote in message news:<mailman.1010522293.9590.python-list at python.org>...
> I'm fairly new to Python.  I downloaded the phone.py program by 
> Jessie Weinstein from the games section of the Vaults of Parnassus 
> listed on the www.python.org site.  The opening Tkinter dialog which 
> should be displayed does not show up.  I am trying to run it on 
> Windows NT.  I am thinking that it there is a problem with the the 
> line: self.master.bind('<Return>', self.show_me) method call.  The 
> show_me call back method seems not to be called.  Any help anyone can 
> give me is greatly appreciated since I need to do some GUI 
> development using Python.  Thanks.  Star
> 
> For convenience here is the script:
> 
> """This is a program to create pictures of phone numbers.
> 
>     To see the graph of a phone number, just enter it in the text box 
> at the
> top and press enter(or click on Show Me!).
>     The constants and options work as follows:
>      * SuperScale lets you modifiy the size of the graph,
>      * LineWidth the width of the line,
>      * salting turns on a bit of random jiggle for lines that start 
> or end in the
>          same place,
>      * coloring makes each line a random color.
> 
>     Created by Jesse Weinstein.  Released on Feb 19, 2001"""
> from Tkinter import *
> import random, string, re
> class PhoneDrawingMaker:
>     #Tuneable Constants
>     SuperScale=4
>     LineWidth=1
> 
>     #Boolen options
>     salting=0
>     coloring=0
> 
>     DEBUG=0
>       #Interesting number to try:  
>       #(397) 426-8413                             
>                                    
>     
>     def __init__(self):
>         """Set a few generated or non-tuneable constants and call 
> make_dialog."""
>         self.PhoneKeyPad = {'1':(1,1), '2':(2,1), '3':(3,1), \
>                             '4':(1,2), '5':(2,2), '6':(3,2), \
>                             '7':(1,3), '8':(2,3), '9':(3,3), \
>                             '*':(1,4), '0':(2,4), '#':(3,4)}
>         self.Ltrs2NumsTbl=string.maketrans(\
>             
> string.uppercase, '2'*3+'3'*3+'4'*3+'5'*3+'6'*3+'7'*4+'8'*3+'9'*4)
>         self.scale=18*self.SuperScale
>         self.make_dialog()
>         
>     def make_dialog(self):
>         """Create and display the interface."""
>         self.master=Tk()
>         self.master.title('Phone Graphing Tool')
>         Label(self.master, text="Phone Number:").grid(row=0)
>         self.e = Entry(self.master)
>         self.e.grid(row=0,column=1)
>         self.c = Canvas(self.master, height=75*self.SuperScale, \
>                         width=60*self.SuperScale, relief=RIDGE, 
> bd='.02i')
>         self.c.grid(row=1, column=1)
>         
>         self.b = Button(self.master, text="Show me!", 
> command=self.show_me)
>         self.b.grid(row=2, column=1)
> ##        self.err = Label(self.master, wraplength='.6i') #text="No 
> Error! XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX")
> ##        self.err.grid(row=1)
> 		
>         self.master.bind('<Return>', self.show_me)
> 
>     def show_me(self, event=None):
>         """Callback: Fixup and draw the phone number."""
>         self.fixup()
>         if not self.PhoneStr:
>             return
>         else:
>             self.draw()
> 
>     def fixup(self):
>         """Fixup the string by translating letters to numbers,
>         and removing anything else.  Also push the translated string 
> back to the
>         interface."""
>         self.PhoneStr=string.translate(self.e.get().upper(), 
> self.Ltrs2NumsTbl)
>         self.e.delete(0, END)
>         self.e.insert(0, self.PhoneStr)
>         self.PhoneStr=re.sub('[^0123456789*#]', '', self.PhoneStr)
>     
>     def draw(self):
>         """Do the actual drawing.
> 
>             This is done using the PhoneKeyPad dict; it maps numbers 
> to
>         locations on a phone keypad.  Then after checking for and 
> processing
>         salting and coloring options, a line just has to be drawn 
> between each
>         point returned from PhoneKeyPad."""
>         self.c.delete(ALL)
>         pX=self.PhoneKeyPad[self.PhoneStr[0]][0]*self.scale
>         pY=self.PhoneKeyPad[self.PhoneStr[0]][1]*self.scale
>         if self.DEBUG:
>             print
>             print 'The Coords of each line created(without salt):'
>             print '--------------------------------'
>         for number in list(self.PhoneStr):
>                 if self.DEBUG:
>                     print pX,pY,'|', self.PhoneKeyPad[number][0]
> *self.scale,\
>                           self.PhoneKeyPad[number][1]*self.scale
> 
>                 salt = 0
>                 if list(self.PhoneStr).count(number) > 1 and 
> self.salting:
>                     salt=random.randint(-2,2)
> 
>                 color = "black"
>                 if self.coloring:
>                     color = "#%02x%02x%02x" % (random.randint(0,255), 
> random.randint(0,255), random.randint(0,255))
> 
>                 self.c.create_line(pX,pY, \
>                                    self.PhoneKeyPad[number][0]
> *self.scale+salt, \
>                                    self.PhoneKeyPad[number][1]
> *self.scale+salt, \
>                                    fill=color, width=self.LineWidth)
>                 pX=self.PhoneKeyPad[number][0]*self.scale+salt
>                 pY=self.PhoneKeyPad[number][1]*self.scale+salt
> 
> It=PhoneDrawingMaker()



More information about the Python-list mailing list