Problem with Tkinter scrollbar callback

Russell E. Owen rowen at cesmail.net
Fri Jan 25 00:27:25 CET 2008


In article <mailman.1052.1201215005.896.python-list at python.org>,
 "Ivan Van Laningham" <ivanlan9 at gmail.com> wrote:

> Hi All--
> I'm having two problems with the scrollbar callback on linux systems
> (Fedora 7, Suse 10.1,2 and 3 all exhibit the issues).
> 
> Problem one:  on Windows, the callback is called with the arguments as
> specified in the doc:  "scroll", "1" or "-1", "units".  When I run the
> identical code on linux, the callback is invoked with only one
> argument, "1" or "-1".  Here's a small program which demos the
> problem:
> 
> ========begin============
> #!/usr/bin/env python
> 
> from Tkinter import *
> import sys
> 
> def die(event):
>     sys.exit(0)
> def sDoit(*args):
>   for i in args:
>     print "scrollbar:",i, type(i)
> root=Tk()
> f=Frame(root)
> f.pack(expand=1,fill=BOTH)
> button=Button(f,width=25)
> button["text"]="Quit"
> button.bind("<Button>",die)
> button.pack()
> xb=Scrollbar(f,orient=HORIZONTAL,command=sDoit)
> xb.pack()
> root.mainloop()
> =============end===========
> 
> On Windows, it produces the correct output
> 
> scrollbar: scroll <type 'str'>
> scrollbar: 1 <type 'str'>
> scrollbar: units <type 'str'>
> 
> but on linux, it produces
> 
> scrollbar: 1 <type 'str'>

I see the same bad thing on our RedHat Enteprise unix system which has 
the default tcl/tk 8.4.6. However I found that if you send the scrollbar 
the "set" command first then it behaves normally. I think it just starts 
out in a funny state where it has no idea how to display itself.

-- Russell

(P.s. it works fine on my MacOS X 10.4.11 system with default tcl 8.4.7 
or with add-on 8.4.14).



More information about the Python-list mailing list