[Tkinter-discuss] [Fwd: Re: Create Grips for modificated size controls]

craf prog at vtr.net
Mon Dec 6 19:11:26 CET 2010


--------- Mensaje reenviado --------
> De: Michael Lange <klappnase at web.de>
> Para: tkinter-discuss at python.org
> Asunto: Re: [Tkinter-discuss] Create Grips for modificated size
> controls
> Fecha: Mon, 6 Dec 2010 17:59:45 +0100
> 
> Hi,
> 
> Thus spoketh craf <prog at vtr.net> 
> unto us on Mon, 06 Dec 2010 12:29:25 -0300:
> 
> > Hi.
> > 
> > Is it possible to create pinch points(grips) to resize a control, as is
> > done in visual basic.?
> > 
> > Example.
> > 
> > 	    	
> >              
> > x-----------x------------x
> > |                        |
> > |                        |
> > x         Button         x ----> Grip
> > |                        |
> > |                        |
> > x-----------x------------x
> > 
> 
> this seems not completely trivial, maybe you can set up something using
> the place geometry manager. Here's a small example that lets you resize a
> button :
> 
> #############################################################
> from Tkinter import *
> root = Tk()
> root.geometry('400x400')
> 
> f = Frame(root, bd=2, cursor='crosshair')
> f.place(x=100, y=100)
> b = Button(f, text='foo', cursor='arrow')
> b.pack(fill='both', expand=1)
> 
> def resize(event):
>     # check we're on the button's right edge:
>     if event.x_root > event.widget.winfo_rootx() + 10:
>         w = event.x_root - event.widget.winfo_rootx()
>         f.place(width=w)
> 
> f.bind('<B1-Motion>', resize)
> root.mainloop()
> ############################################################
> 
> This of course only works horizontally and only on the right side of the
> button, but I think you'll see the point. For methods to resize the
> button in the three other dimensions, look at the widget's winfo_...()
> methods, the information provided from pack_info() and the event's
> attributes.
> If you want visible grips, you can use a Canvas instead of the Frame and
> draw for example a few triangles (with create_polygon())  onto the Canvas'
> edges, and then update the triangles' coordinates from within the resize()
> callback.
> 
> You may also want to look at the "Page" Tkinter gui builder
> (http://page.sourceforge.net/), which (iirc) makes heavy use of place() to
> resize widgets, and which in fact does exactly what you want (click on a
> widget -> "grips" are drawn around it , which you can drag), but I think
> Page is written in Tcl.
> 
> I hope this helps
> 
> Michael
> 
> 
> 
> .-.. .. ...- .   .-.. --- -. --.   .- -. -..   .--. .-. --- ... .--. . .-.
> 
> Without followers, evil cannot spread.
> 		-- Spock, "And The Children Shall Lead", stardate 5029.5
> _______________________________________________
> Tkinter-discuss mailing list
> Tkinter-discuss at python.org
> http://mail.python.org/mailman/listinfo/tkinter-discuss

Guauuu¡, thanks Michael for the code, it's perfect.

Regards.

CRAF




More information about the Tkinter-discuss mailing list