Getting value of radiobutton trouble
Philippe C. Martin
philippe at philippecmartin.com
Sat May 28 18:19:45 EDT 2005
Then I guess you need a TopLevel widget instead:
(I still suggest you look at wxPython)
from Tkinter import *
class GetVariant:
def __init__(self,p):
self.root = p
self.firstframe = Frame(self.root,bg="red")
self.firstframe.pack(side=BOTTOM,expand=1)
self.v = StringVar()
self.radiobutton = Radiobutton(self.firstframe,text="Variant 1",
variable=self.v, value="Variant 1")
self.radiobutton.pack(side=TOP,anchor=W)
self.radiobutton.select()
self.radiobutton = Radiobutton(self.firstframe,text="Variant 2",
variable=self.v, value="Variant 2")
self.radiobutton.pack(side=TOP,anchor=W)
self.radiobutton = Radiobutton(self.firstframe,text="Variant 3",
variable=self.v, value="Variant 3")
self.radiobutton.pack(side=TOP,anchor=W)
self.secondframe = Frame(self.root,bg="blue")
self.secondframe.pack()
self.var = Button(self.secondframe,text="What
Variant",command=self.call)
self.var.pack(expand=1,side=BOTTOM)
def call(self):
self.variant = self.v.get()
print 'Input => "%s"' % self.variant
class OneButton:
def __init__(self):
self.root = Tk()
Button(self.root,text="click me",command=self.getvar).pack()
def getvar(self):
self.mainframe = Toplevel(bg="yellow")
a=GetVariant(self.mainframe)
d = OneButton()
d.root.mainloop()
VK wrote:
> Philippe C. Martin wrote:
>> Sorry,
>>
>> I still had your code in my clipboard :-) here goes:
>
> So, your code works, but I need, that first window calls another
> separate window. In your programm they stick together.
> Reg, VK
>
>>
>>
>>
>> from Tkinter import *
>> class GetVariant(Frame):
>> def __init__(self,p):
>> self.root = p
>> self.mainframe = Frame(self.root,bg="yellow")
>> self.mainframe.pack(fill=BOTH,expand=1)
>>
>> self.firstframe = Frame(self.mainframe,bg="red")
>> self.firstframe.pack(side=BOTTOM,expand=1)
>>
>>
>> self.v = StringVar()
>> self.radiobutton = Radiobutton(self.firstframe,text="Variant 1",
>> variable=self.v, value="Variant 1")
>> self.radiobutton.pack(side=TOP,anchor=W)
>> self.radiobutton.select()
>> self.radiobutton = Radiobutton(self.firstframe,text="Variant 2",
>> variable=self.v, value="Variant 2")
>> self.radiobutton.pack(side=TOP,anchor=W)
>> self.radiobutton = Radiobutton(self.firstframe,text="Variant 3",
>> variable=self.v, value="Variant 3")
>> self.radiobutton.pack(side=TOP,anchor=W)
>>
>>
>>
>> self.secondframe = Frame(self.mainframe,bg="blue")
>> self.secondframe.pack()
>> self.var = Button(self.secondframe,text="What
>> Variant",command=self.call)
>> self.var.pack(expand=1,side=BOTTOM)
>>
>>
>>
>> def call(self):
>> print dir(self.v)
>> self.variant = self.v.get()
>> print 'Input => "%s"' % self.variant
>>
>> class OneButton(Frame):
>> def __init__(self):
>> self.root = Tk()
>> Button(self.root,text="click me",command=self.getvar).pack()
>> def getvar(self):
>> print 'HRE'
>> a=GetVariant(self.root)
>>
>> d = OneButton()
>> d.root.mainloop()
>>
>>
>>
>>
>>
>>
>> Philippe C. Martin wrote:
>>
>>
>>>Hi,
>>>
>>>I think your second call to Tk() does it: this works although the look is
>>>different:
>>>
>>>
>>>from Tkinter import *
>>>class GetVariant:
>>> def __init__(self):
>>> self.root = Tk()
>>> self.mainframe = Frame(self.root,bg="yellow")
>>> self.mainframe.pack(fill=BOTH,expand=1)
>>>
>>> self.firstframe = Frame(self.mainframe,bg="red")
>>> self.firstframe.pack(side=BOTTOM,expand=1)
>>>
>>> global v
>>> v = StringVar()
>>> self.radiobutton = Radiobutton(self.firstframe,text= "Variant
>>>1", variable=v, value="Variant 1")
>>> self.radiobutton.pack(side=TOP,anchor=W)
>>> self.radiobutton.select()
>>> self.radiobutton = Radiobutton(self.firstframe,text= "Variant
>>>2", variable=v, value="Variant 2")
>>> self.radiobutton.pack(side=TOP,anchor=W)
>>> self.radiobutton = Radiobutton(self.firstframe,text= "Variant
>>>3", variable=v, value="Variant 3")
>>> self.radiobutton.pack(side=TOP,anchor=W)
>>>
>>>
>>>
>>> self.secondframe = Frame(self.mainframe,bg="blue")
>>> self.secondframe.pack()
>>> self.var = Button(self.secondframe,text="What
>>>Variant",command=self.call)
>>> self.var.pack(expand=1,side=BOTTOM)
>>>
>>>
>>>
>>> def call(self):
>>> self.variant = v.get()
>>> print 'Input => "%s"' % self.variant
>>>
>>>class OneButton:
>>> def __init__(self):
>>> self.root = Tk()
>>> Button(self.root,text="click me",command=self.getvar).pack()
>>> def getvar(self):
>>> a=GetVariant()
>>>
>>>d = OneButton()
>>>d.root.mainloop()
>>>
>>>
>>>
>>>
>>>VK wrote:
>>>
>>>
>>>>Hi!
>>>>What I'm missing in following code? Cannot get the values of
>>>>radiobuttons. Starting only one class (GetVariant), it works. When I put
>>>>two classes together, it doesn't.
>>>>Regards, VK
>>>>
>>>>from Tkinter import *
>>>>class GetVariant:
>>>> def __init__(self):
>>>> self.root = Tk()
>>>> self.mainframe = Frame(self.root,bg="yellow")
>>>> self.mainframe.pack(fill=BOTH,expand=1)
>>>>
>>>> self.firstframe = Frame(self.mainframe,bg="red")
>>>> self.firstframe.pack(side=BOTTOM,expand=1)
>>>>
>>>> global v
>>>> v = StringVar()
>>>> self.radiobutton = Radiobutton(self.firstframe,text= "Variant
>>>>1", variable=v, value="Variant 1")
>>>> self.radiobutton.pack(side=TOP,anchor=W)
>>>> self.radiobutton.select()
>>>> self.radiobutton = Radiobutton(self.firstframe,text= "Variant
>>>>2", variable=v, value="Variant 2")
>>>> self.radiobutton.pack(side=TOP,anchor=W)
>>>> self.radiobutton = Radiobutton(self.firstframe,text= "Variant
>>>>3", variable=v, value="Variant 3")
>>>> self.radiobutton.pack(side=TOP,anchor=W)
>>>>
>>>>
>>>>
>>>> self.secondframe = Frame(self.mainframe,bg="blue")
>>>> self.secondframe.pack()
>>>> self.var = Button(self.secondframe,text="What
>>>>Variant",command=self.call)
>>>> self.var.pack(expand=1,side=BOTTOM)
>>>>
>>>>
>>>>
>>>> def call(self):
>>>> self.variant = v.get()
>>>> print 'Input => "%s"' % self.variant
>>>>
>>>>class OneButton:
>>>> def __init__(self):
>>>> self.root = Tk()
>>>> Button(self.root,text="click
>>>> me",command=self.getvar).pack()
>>>> def getvar(self):
>>>> a=GetVariant()
>>>>
>>>>d = OneButton()
>>>>d.root.mainloop()
>>
>>
More information about the Python-list
mailing list