Peter, You already have an answer to you question but if you want to fancy up your program you could replace;
self.chkTest.bind('<ButtonRelease-1>', self.chkTest_click) > with > self.chkTest.bind('<f2>',self.chkTest_click0) or some other acceptable key from the keyboard > def chkTest_click0(self,event): self.chkTest_click() def chkTest_click(self): # read check box state and display appropriate text if self.intTest.get()==0: self.lblTest.config(text='Check box cleared') else: self.lblTest.config(text='Check box set') jim-on-linux http://www.inqvista.com On Thursday 09 November 2006 18:28, peter wrote: > I've come across a weird difference between the > behaviour of the Tkinter checkbox in Windows > and Linux. The issue became apparent in some > code I wrote to display an image in a fixed > size canvas widget. If a checkbox was set then > the image should be shrunk as necessary to fit > the canvas while if cleared it should appear > full size with scrollbars if necessary. > > The code worked fine under Linux (where it was > developed). But under Windows, the first click > in the checkbox did nothing, then subsequent > clicks adjusted the size according to the > PREVIOUS, not the current, checkbox state. > > I've isolated the problem in the code below, > which shows a single checkbox and a label to > describe its state. It works ok under Linux, > but in Windows it is always one click behind. > > Any ideas? I am using > Linux: Fedora Core 3, Python 2.3.4 > Windows: Windows NT, Python 2.3.4 > > Peter > > =============================================== >========================= import Tkinter as tk > > > > class App: > > def __init__(self,frmMain): > > """ > Demonstrate difference in Windows / > Linux handling of check box > > Text in lblTest should track check box > state """ > > # Set up form > > self.intTest=tk.IntVar() > > > self.chkTest=tk.Checkbutton(frmMain,text='Click > me!',variable=self.intTest) > > > self.chkTest.grid(row=0,column=0,padx=5,pady=5, >sticky=tk.W) > > > self.chkTest.bind('<ButtonRelease-1>',self.chkT >est_click) > > > > > self.lblTest=tk.Label(frmMain,text='Dummy') > > > self.lblTest.grid(row=1,column=0,padx=5,pady=5, >sticky=tk.W) > > > self.chkTest_click() # so as to > initialise text > > def chkTest_click(self,event=None): > # read check box state and display > appropriate text if self.intTest.get()==0: > self.lblTest.config(text='Check box > cleared') else: > self.lblTest.config(text='Check box > set') > > > > > if __name__=='__main__': > > frmMain=tk.Tk() > > app=App(frmMain) > > frmMain.mainloop() -- http://mail.python.org/mailman/listinfo/python-list