[Tkinter-discuss] initial state of radiobutton

Iain Day iain at day-online.org.uk.invalid
Sun Aug 17 14:02:58 CEST 2008


Hi Mick,

Sorry about that. Here is the simplest example, which fails:

import Tkinter as tk
import tkSimpleDialog

def edit_preferences(event=None):
     prefs = Preferences(master, title="Preferences")

class Preferences(tkSimpleDialog.Dialog):
     def body(self, master):
         settings = tk.LabelFrame(master, text="Settings")
         settings.grid(row=0, column=0)
         tk.Label(settings, text="Angular Units: ").grid(row=0, 
column=0, sticky=tk.E)
         angles = tk.StringVar(value='radians')
         tk.Radiobutton(settings, text="Degrees", 
variable=angles,value='degrees').grid(row=0, column=1)
         tk.Radiobutton(settings, text="Radians", 
variable=angles,value='radians').grid(row=0, column=2)


master = tk.Tk()

tk.Button(master, text="Prefs", command=edit_preferences).grid()

master.mainloop()

Thanks for your help,

Iain

Michael O'Donnell wrote:
> Hi Iain,
> 
>   My earlier reply established that the radio widget IS functioning correctly
> on your machine in the usual case. If there is still something wrong, I'd have
> to see runnable code from your app which fails to set the radio. Can you
> make a minimal case which uses the class structure you discuss, and
> still doesn't work, and send it (probably as a compressed archive,
> e.g., zip file).
> 
> I'll then see if I can find the bug. What OS are you on?
> 
> Mick
> 
> On Sat, Aug 16, 2008 at 9:34 PM, Iain Day
> <iain at day-online.org.uk.invalid> wrote:
>> Hi Mick,
>>
>> Sorry about that. The code below does work, however, in my case its a little
>> more complex. I'll try and explain. I've put most of the code into different
>> modules which get imported in the usual way, so I have one that has all the
>> classes for the menu bar. There is also a class in here which generates the
>> tkSimpleDialog for the preferences. Is is here that I've got the bit of code
>> I posted below.
>>
>> __main__.angles is set correctly, and if I do:
>>
>> print tk.StringVar.get(angles)
>>
>> I get the correct result.
>>
>> I'm a little confused. Also if I put angles into an Entry widget it is
>> correct.
>>
>> Thanks for your help,
>>
>> Iain
>>
>> Michael O'Donnell wrote:
>>> Dear Iain,
>>>
>>>    Makes it easier to test your code if you provide
>>> a standalone example.
>>>
>>> I modified your code as follows to get it to run:
>>>
>>> import Tkinter as tk
>>> master = tk.Tk()
>>> settings = tk.LabelFrame(master, text="Settings")
>>> settings.grid(row=0, column=0)
>>> tk.Label(settings, text="Angular Units: ").grid(row=0, column=0,
>>> sticky=tk.E)
>>> angles = tk.StringVar(value='radians')
>>> tk.Radiobutton(settings, text="Degrees", variable=angles,
>>> value='degrees').grid(row=0, column=1)
>>> tk.Radiobutton(settings, text="Radians", variable=angles,
>>> value='radians').grid(row=0, column=2)
>>> master.mainloop()
>>>
>>> ...and on my Macosx running python 2.5.2 it runs fine, with buttons
>>> selected.
>>>
>>> My bet is that angles is not in fact set, or is not set
>>> to one of 'degrees' or 'radians'. Put a print statement to
>>> see what value  __main__.angles has at the point of
>>> setting the variable angles.
>>>
>>> Mick
>>>
>>>
>>>
>>> On Fri, Aug 15, 2008 at 6:19 AM, Iain Day
>>> <iain at day-online.org.uk.invalid> wrote:
>>>> Hi,
>>>>
>>>> I'm trying to create a preferences dialog. At the moment, I'm just
>>>> reading a
>>>> config file using ConfigParser and displaying this in a tkSimpleDialog.
>>>>
>>>> I've got some Entry widgets working okay, but I can't get the
>>>> radiobuttons
>>>> to work. The code is:
>>>>
>>>> import Tkinter as tk
>>>>
>>>> settings = tk.LabelFrame(master, text="Settings")
>>>> settings.grid(row=0, column=0)
>>>>
>>>> tk.Label(settings, text="Angular Units: ").grid(row=0, column=0,
>>>> sticky=tk.E)
>>>>
>>>> angles = tk.StringVar(value=__main__.angles)
>>>>
>>>> tk.Radiobutton(settings, text="Degrees", variable=angles,
>>>> value='degrees').grid(row=0, column=1)
>>>>
>>>> tk.Radiobutton(settings, text="Radians", variable=angles,
>>>> value='radians').grid(row=0, column=2)
>>>>
>>>> When I run this, angles is set to degrees but I don't get the radiobutton
>>>> active (either of them).
>>>>
>>>> What am I doing wrong?
>>>>
>>>> Thanks,
>>>>
>>>> Iain
>>>>
>>>> _______________________________________________
>>>> Tkinter-discuss mailing list
>>>> Tkinter-discuss at python.org
>>>> http://mail.python.org/mailman/listinfo/tkinter-discuss
>>>>
>> _______________________________________________
>> Tkinter-discuss mailing list
>> Tkinter-discuss at python.org
>> http://mail.python.org/mailman/listinfo/tkinter-discuss
>>



More information about the Tkinter-discuss mailing list