mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			902 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			902 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| # List a remote app's widget tree (names and classes only)
 | |
| 
 | |
| import sys
 | |
| import string
 | |
| 
 | |
| from Tkinter import *
 | |
| 
 | |
| def listtree(master, app):
 | |
| 	list = Listbox(master, name='list')
 | |
| 	list.pack(expand=1, fill=BOTH)
 | |
| 	listnodes(list, app, '.', 0)
 | |
| 	return list
 | |
| 
 | |
| def listnodes(list, app, widget, level):
 | |
| 	klass = list.send(app, 'winfo', 'class', widget)
 | |
| ##	i = string.rindex(widget, '.')
 | |
| ##	list.insert(END, '%s%s (%s)' % ((level-1)*'.   ', widget[i:], klass))
 | |
| 	list.insert(END, '%s (%s)' % (widget, klass))
 | |
| 	children = list.tk.splitlist(
 | |
| 		list.send(app, 'winfo', 'children', widget))
 | |
| 	for c in children:
 | |
| 		listnodes(list, app, c, level+1)
 | |
| 
 | |
| def main():
 | |
| 	if not sys.argv[1:]:
 | |
| 		sys.stderr.write('Usage: listtree appname\n')
 | |
| 		sys.exit(2)
 | |
| 	app = sys.argv[1]
 | |
| 	tk = Tk()
 | |
| 	tk.minsize(1, 1)
 | |
| 	f = Frame(tk, name='f')
 | |
| 	f.pack(expand=1, fill=BOTH)
 | |
| 	list = listtree(f, app)
 | |
| 	tk.mainloop()
 | |
| 
 | |
| if __name__ == '__main__':
 | |
| 	main()
 | 
