Tough Scrolling question with Tkinter

Eugene Druker ledruker at rogers.com
Tue Jun 14 20:31:42 CEST 2005


Hi Saqib,

AFAIU, you want to change the scrollregion, not the size. So try:

def _b1PressEvt(event):
    x0,y0,x1,y1 = canvas.config('scrollregion')[4]
    print x0,y0,x1,y1
    canvas.config(scrollregion=(int(x0),int(y0),int(x1)+100,int(y1)))

First click will show nothing, because first change keeps the scrollregion
entirely in the window.

Eugene

<syed_saqib_ali at yahoo.com> wrote in message
news:1118764727.767060.189130 at o13g2000cwo.googlegroups.com...
> Please take a look at and run the code snippet shown below.
>
> It creates a canvas with vertical & Horizontal scroll-bars.
> If you shrink the window to smaller than the area of the canvas, the
> scroll-bars work as advertised. That's great.
>
> However, if you click the Left Mouse button, it calls code which
> expands the width of the canvas by 100 pixels. The area being viewed
> expands correspondingly..... BUT I DON'T WANT IT TO!!
>
> I want to know how to expand the size of a canvas without changing the
> area/size of what is currently shown by the scroll bars. I would like
> to find code that expands the width of the canvas and simply adjusts
> the H-Scrollbar without changing what is shown on in the area of the
> canvas being displayed.
>
> I have tried seemingly every combination of messing with the
> canvas.config and scrollregion parameters to no avail. Can someone out
> there show me how its done??
>
> -Saqib
>
> -----------------------------------------
> import Tkinter
>
> def _b1PressEvt(event):
>     print "B1"
>     _canvas.config(width=300)
>
> tkRoot = Tkinter.Tk()
> _canvas = Tkinter.Canvas(tkRoot, background="white", width=200,
> height=200,)
>
> # Scroll Bars
> vScrollbar = Tkinter.Scrollbar(tkRoot)
> vScrollbar.pack(side=Tkinter.RIGHT, expand=True, fill=Tkinter.Y)
>
> hScrollbar = Tkinter.Scrollbar(tkRoot)
> hScrollbar.pack(side=Tkinter.BOTTOM, expand=True, fill=Tkinter.X)
>
> _canvas.config(
>     width=200,
>     height=200,
>     scrollregion=(0,0,100,100),
>     yscrollcommand=vScrollbar.set,
>     xscrollcommand=hScrollbar.set,
> )
>
> vScrollbar.config(orient=Tkinter.VERTICAL, command=_canvas.yview)
> hScrollbar.config(orient=Tkinter.HORIZONTAL, command=_canvas.xview)
>
> #tkRoot.pack()
> _canvas.pack(expand=Tkinter.NO)
> vScrollbar.pack(side=Tkinter.RIGHT, expand=True, fill=Tkinter.Y)
> hScrollbar.pack(side=Tkinter.BOTTOM, expand=True, fill=Tkinter.X)
>
> # Function Bindings
> _canvas.bind("<Button-1>", _b1PressEvt)
>
> tkRoot.mainloop()
>





More information about the Python-list mailing list