Python Tkinter变量问题?

Python Tkinter变量问题?,python,user-interface,tkinter,Python,User Interface,Tkinter,我在通过我创建的名为“提交”的按钮的“单击”功能计算值时遇到问题。我创建了两个单选按钮来选择pi的哪个值,让用户选择。用户可以选择的两个不同的值是3.14,大多数教科书用于计算圆的面积和周长的pi的有理突变版本,以及pi的有理正则版本3.1415。。。等等我在函数外部创建了pi变量,该函数通过链接到单选按钮的表达式计算最终值。当选择一个单选按钮时,变量“value”会将该单选按钮的值发送给它。然后,我可以操纵变量“value”,并在代码中逻辑地选择将变量“pi”设置为有理或非有理版本pi。我在一

我在通过我创建的名为“提交”的按钮的“单击”功能计算值时遇到问题。我创建了两个单选按钮来选择pi的哪个值,让用户选择。用户可以选择的两个不同的值是3.14,大多数教科书用于计算圆的面积和周长的pi的有理突变版本,以及pi的有理正则版本3.1415。。。等等我在函数外部创建了pi变量,该函数通过链接到单选按钮的表达式计算最终值。当选择一个单选按钮时,变量“value”会将该单选按钮的值发送给它。然后,我可以操纵变量“value”,并在代码中逻辑地选择将变量“pi”设置为有理或非有理版本pi。我在一个函数中使用pi变量时遇到问题。我知道我必须使用全局变量,我也尝试过,但我就是无法让它工作。我也无法从单选按钮接收输入。我今年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”。关于函数“Answer”中的“pi”变量引用是如何未解决的,并且它没有引用任何东西,我不断地得到错误。在我的代码开始时,我声明“pi”变量是一个全局值。除了程序中全局变量的问题外,我无法从单选按钮接收输入,我需要帮助。如果有人有时间,请帮忙。谢谢您的时间。

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

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

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

我使用的是Python版本2@RohanK.,请将实际错误添加到问题中。(Python 2.7没有错误。)我修复了我的问题。谢谢你的意见@罗汉克:那么请把它放在这里作为答案,并按回答结束这个问题。谢谢