Getting value of radiobutton trouble

V

VK

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()
 
P

Philippe C. Martin

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()
 
P

Philippe C. Martin

Sorry,

I still had your code in my clipboard :) here goes:



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()
 
V

VK

Philippe said:
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:

Sorry, but I don't get it. There is no deference between my code and
your answer. I'm beginner...
 
P

Philippe C. Martin

PS: Since your starting with TKinter, and although I do not know what your
goal is, I suggest you take a look at wxPython: it is _wonderfull_ ! (no
offence to TCL/TK)

Regards,

Philippe
 
V

VK

Philippe said:
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
 
P

Philippe C. Martin

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()
 
V

VK

Philippe said:
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:
Unfortunately, I can use only TkInter and Pmw
 
V

VK

Philippe said:
PS: Since your starting with TKinter, and although I do not know what your
goal is, I suggest you take a look at wxPython: it is _wonderfull_ ! (no
offence to TCL/TK)

Regards,

Philippe






VK wrote:

Thanks for your help! Toplevel made the job.
Reg. VK
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top