2011-10-15 114 views
1

我和我的朋友正在制作一个显示4个单选按钮和文本的窗口,我们正努力在底部添加两个按钮。将单选按钮添加到Tkinter

这里是我们的代码:

from Tkinter import * 

import time 

class App: 

    def __init__(self, master): 


     frame = Frame(master) 
     frame.pack() 

     v = IntVar() 

     Radiobutton(master, text="0 for not at all", variable=v, value=1).pack(side=TOP) 

     Radiobutton(master, text="1 for somewhat", variable=v, value=2).pack(side=TOP) 

     Radiobutton(master, text="2 for moderatly", variable=v, value=3).pack(side=TOP) 

     Radiobutton(master, text="3 for a lot", variable=v, value=4).pack(side=TOP) 

     self.button = Button(master, text="BACK", fg="red", command=self.button6) 
     self.button.pack(side=BOTTOM) 

     self.button = Button(master, text="NEXT", fg="red", command=self.button5) 
     self.button.pack(side=BOTTOM) 

    def button6(self): 
     print "Sam is awesome!GAJONGA" 

    def button5(self): 
     print "PYTHON FOR THE WIN! GIAN SAYS PYTHON = FILTHY" 

w = Label(master, text="1. Anxiety, nervousness, worry or fear") 
w.pack() 

master = Tk() 


master.mainloop() 

运行这给了我们以下错误:

Traceback (most recent call last): 
    File "/Volumes/CHROME USB/STORAGE/TKinker GUI/Radiobutton example.py", line 36, 
    in <module> 
    w = Label(master, text="1. Anxiety, nervousness, worry or fear") 
NameError: name 'master' is not defined 

回答

3

您需要实际初始化App类才能完成任何操作。标签应该与其他所有小部件一起放入init方法中。通常情况下,你会把所有的小部件放在框架内(例如,Radiobutton(frame,text = ...),但是如果你不打算使用框架,那么就不需要创建它并且调整单选按钮(与锚=“W”),而不是居中使他们看起来更干净。

from Tkinter import * 
import time 

class App: 
    def __init__(self, master): 
     w = Label(master, text="1. Anxiety, nervousness, worry or fear") 
     w.pack() 

     v = IntVar() 
     Radiobutton(master, text="0 for not at all", variable=v, value=1).pack(side=TOP, anchor="w") 
     Radiobutton(master, text="1 for somewhat", variable=v, value=2).pack(side=TOP, anchor="w") 
     Radiobutton(master, text="2 for moderatly", variable=v, value=3).pack(side=TOP, anchor="w") 
     Radiobutton(master, text="3 for a lot", variable=v, value=4).pack(side=TOP, anchor="w") 

     self.button = Button(master, text="BACK", fg="red", command=self.button6) 
     self.button.pack(side=BOTTOM) 
     self.button = Button(master, text="NEXT", fg="red", command=self.button5) 
     self.button.pack(side=BOTTOM) 

    def button6(self): 
     print "Sam is awesome!GAJONGA" 

    def button5(self): 
     print "PYTHON FOR THE WIN! GIAN SAYS PYTHON = FILTHY" 

master = Tk() 
app = App(master) 
master.mainloop() 
0

master是传递给App.__init__()参数;它不存在于此之外,例如您尝试使用它的全球范围内。

+0

感谢您发表评论伊格纳西奥,但我仍然要多一个小白的:-(明白你的意思。我们的大部分代码是从互联网上的例子中剪切和粘贴,我们很快学习到:-D PS STACKOVERFLOW.COM真棒! – gian848396