Re: Tkinter custom drawing
Thank you this is nice code. I never thought of using the move_pending method.. Still it doesn't answer my question (which I ensure is very unclear). But do not worry, I found some way to get throught my dilemma and I can live easily with it. Thanks for your help. -- http://mail.python.org/mailman/listinfo/python-list
Re: Tkinter custom drawing
Xavier Bérard wrote: >>>Now, the problem, is that I have already plenty of widgets on my >>>screen. I just want to draw over them, which is a bit difficult in my >>>comprehension of things. >> >>What are you trying to achieve by "drawing over" widgets? > > > > Want I want to do is a sort of GUI builder for Tkinter. I already > finished a rough version, but for now I'm making a lighter version of > this project. So, my intent, is to create a widget under the widget. > While dragging the mouse, I want to see this rectangle that defines > the boundaries of the new widget I'm creating. > > Sorry for being unclear. > You may want to look into the place() method. The python mega widgets (PMW) has a PanedWidget that implements this smoothly. You may want to emulate that approach: #! /usr/bin/env python from Tkinter import * def button_pressed(e): moved = e.widget moved.move_pending = True moved['cursor'] = 'hand1' moved.press_x = e.x moved.press_y = e.y def button_moved(e): moved = e.widget if moved.move_pending: moved.after_idle(lambda e=e: _button_moved(e)) moved.move_pending = False def _button_moved(e): moved = e.widget delta_x = e.x - moved.press_x delta_y = e.y - moved.press_y size, wx, wy = moved.winfo_geometry().split('+') new_x = int(wx) + delta_x new_y = int(wy) + delta_y moved.place(x=new_x, y=new_y) moved.update_idletasks() moved.move_pending = True def button_up(e): e.widget['cursor'] = '' def register(widget): widget.bind('', button_pressed) widget.bind('', button_moved) widget.bind('', button_up) widget.update_idletasks() def test(): tk = Tk() b = Button(tk, text='Button') b.pack() c = Button(tk, text='Another Button') c.pack() x = Label(tk, text='Drag Me', relief=RIDGE, border=1) register(x) x.pack() tk.geometry('200x200') tk.mainloop() if __name__ == "__main__": test() James -- http://mail.python.org/mailman/listinfo/python-list
Re: Tkinter custom drawing
Xavier Bérard wrote: >>from Tkinter import Invisiblecanvas > > > ? > > The whole web never mentions this Invisiblecanvas. > Do you have anything alike to share ? ;) > > Xavier > I figured that if you were sincere, you'd call me on this one. -- http://mail.python.org/mailman/listinfo/python-list
Re: Tkinter custom drawing
> from Tkinter import Invisiblecanvas ? The whole web never mentions this Invisiblecanvas. Do you have anything alike to share ? ;) Xavier -- http://mail.python.org/mailman/listinfo/python-list
Re: Tkinter custom drawing
> > > Now, the problem, is that I have already plenty of widgets on my > > screen. I just want to draw over them, which is a bit difficult in my > > comprehension of things. > > What are you trying to achieve by "drawing over" widgets? Want I want to do is a sort of GUI builder for Tkinter. I already finished a rough version, but for now I'm making a lighter version of this project. So, my intent, is to create a widget under the widget. While dragging the mouse, I want to see this rectangle that defines the boundaries of the new widget I'm creating. Sorry for being unclear. -- http://mail.python.org/mailman/listinfo/python-list
Re: Tkinter custom drawing
Xavier Bérard wrote: > Hello everyone, > > I am wondering if there is a way to use custom drawing in Tkinter. > I've been using it for few months, and all I know about custom drawing > is to draw directly on a Canvas with such methods as "create_line", > "create_rectangle", etc. > > Now, the problem, is that I have already plenty of widgets on my > screen. I just want to draw over them, which is a bit difficult in my > comprehension of things. > > My perfect solution was to put temporary invisible Canvas when I want > do use draw methods, but such thing doesn't exist (as far as I could > search in this community's posts). > > Anyone have a clue ? > > Thanks, > Xavier Berard > Are you sure you are spelling it right? The C is not capitalized: from Tkinter import Invisiblecanvas etc. James -- http://mail.python.org/mailman/listinfo/python-list
Re: Tkinter custom drawing
Xavier Bérard wrote: > > Now, the problem, is that I have already plenty of widgets on my > screen. I just want to draw over them, which is a bit difficult in my > comprehension of things. > What are you trying to achieve by "drawing over" widgets? -- Kevin Walzer Code by Kevin http://www.codebykevin.com -- http://mail.python.org/mailman/listinfo/python-list