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