Tkinter变量问题?

时间:2014-06-12 20:05:47

标签: python user-interface tkinter

我在使用"点击"通过函数计算值时遇到问题。我创建的按钮名为"提交"。我创建了两个单选按钮来选择pi的哪个值让用户选择。用户可以选择的两个不同的值是3.14,大多数教科书用来计算圆的面积和周长的pi的合理突变版本,以及pi的不合理的常规版本,3.1415 ......等等。我在函数之外创建了pi变量,它通过链接到单选按钮的表达式计算最终值。当选择一个单选按钮时,变量" value"然后将该单选按钮的值发送给它。然后我可以操纵变量" value"并在我的代码中逻辑选择设置变量" pi"等于理性或非理性版本pi。我在我的一个函数中使用pi变量时遇到问题。我知道我必须使用全局变量而我试过,但我无法让它工作。我也无法接收来自Radio Buttons的输入。我13岁,是python和编码的新手:

from Tkinter import *
import cmath
import math   

top = Toplevel()
top.wm_title("Circumference")
#top.geometry("500x500")
space = Label(top, text=" ")
space.pack()
global finalans
global pi
finalans = StringVar()

#Pi Choose
value = IntVar()

Radiobutton(top, text="Rational Pi - 3.14", variable=value, value=1).pack(anchor=W)
Radiobutton(top, text="Irrational Pi - 3.1415...", variable=value, value=2).pack(anchor=W)

if value == 1:
    pi = 3.14

if value == 2:
    pi = math.pi


s = Label(top, text=" ")
s.pack()

h = Label(top, text="Radius")
h.pack()



def Answer():
    firstval = int(e.get())
    finalans.set("Answer: " + str(2 * pi * firstval))



#First Entry
e = Entry(top)
e.pack()
e.focus_set()


add2 = Button(top, text="Submit", width=10, command=Answer)
add2.pack()

#Final Answer
answer = Label(top, textvariable=finalans)
answer.pack()

当我运行它时,我希望标签显示" 2 * pi * firstval"。我一直在猜错" pi"函数中的变量引用"答案"尚未解决,它没有引用它。我在代码开头说过" pi"变量是一个全局值。除了我的程序中的全局变量的问题,我无法从我的单选按钮接收输入,我需要帮助。如果有人有时间,请帮忙。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

你需要在函数中声明你的全局变量:

def Answer():
    global pi, e, finalans
    firstval = int(e.get())
    finalans.set("Answer: " + str(2 * pi * firstval))

(这在Python 2中不是必需的,所以你可能使用Python 3?)