Why is Tkinter for Windows NT much faster?

yanivk at my-deja.com yanivk at my-deja.com
Wed Aug 23 07:02:11 EDT 2000


Hi Richard! First, I really appreciate your help. I added the code to run and
any comments are welcome. I tried to remove all unnecessary line code to make
it as easy for you as possible. Best of all, Yaniv Kaplan.

from Tkinter import *
from ScrolledText import ScrolledText

class form(Frame):
    def __init__(self, master=None):
	Frame.__init__(self, master)
	self.expand_list = []
	self.text = ScrolledText(self)
	self.text.pack(fill=BOTH, expand=1)
	self.pack(fill=BOTH, expand=1)

  def setformulas(self, personss):	text = self.text	pos = 1      
  for first, last, exp in persons:	    start = text.index(CURRENT)    
text.insert(END, 'Person number %d. status: ' % (pos,), 't')   
text.insert(END, 'Unknown', ('st%d' % (pos,), 'st'))	if not (pos%2): #Add
some buttons to simulate real behaviour 	 text.insert(END, ' '*30)    
	   text.window_create(END, window = Button(text, text='Show house')) 
	     text.insert(END, '\n')    else:		     text.insert(END,
'\n')	 text.insert(END, 'First name: ', 'en') 	 text.insert(END,
first+'\n')    text.insert(END, 'Last name: ', 'su')	      
text.insert(END, last+'\n')	l = Label(text, text='+', fg='blue') #chage
'+' to an arrow bitmap	    text.window_create(END, window=l)	    exd =
'ex%d' % (pos,) 	  text.insert(END, 'EXPAND:', (exd, 'ex'))	 
text.insert(END, '\n', 'exs%d' % (pos,))	text.insert(END, '\n',
'exe%d' % (pos,))	 text.tag_bind(exd, '<Button-1>', lambda event,
self=self, text=text, l=l, n=pos: self.showexpand(n, text, l))		
l.bind('<Button-1>', lambda event, self=self, text=text, l=l, n=pos:
self.showexpand(n, text, l))	   self.expand_list.append((exp, NO))	  
pos = pos+1	pass  text.tag_bind('ex', '<Enter>', lambda event, text=text:
text.config(cursor='hand2'))	text.tag_bind('ex', '<Leave>', lambda event,
text=text: text.config (cursor='right_ptr'))  self.bind_class("Label",
'<Enter>', lambda event, text=text: text.config (cursor='hand2'))  
self.bind_class("Label", '<Leave>', lambda event, text=text: text.config
(cursor='right_ptr'))  text.tag_config('st', foreground='red')	      
text.tag_config('ex', foreground='blue')	text.tag_config('t',
foreground='red')  text.tag_config('su', foreground='blue')	  
text.tag_config('en', foreground='blue')

    def showexpand(self, person, text, l):
    #-------------------------------------------
	exp, opened = self.expand_list[person-1]
	pos = text.index('exs%d.last' % (person,))
	if not opened:
	    text.insert(pos, exp+'\n')
	    l.config(text='-')
	else:
	    text.delete(pos,'exe%d.first' % (person,))
	    l.config(text='+')
	    pass
	self.expand_list[person-1] = (exp, not opened)

if __name__=='__main__':  f = form()  # create some persons to add to list 
persons = []  for i in range(200):  persons.append( ('first name for person
number '+`i+1`+'.', 'Last name for person '+`i+1`+'.', 'expand information
for person '+`i+1`+'.\n This information is viewed after clicking the EXPAND
text.') )  f.setformulas(persons)  f.mainloop()


Sent via Deja.com http://www.deja.com/
Before you buy.



More information about the Python-list mailing list