2015-05-25 43 views
0

对于我的软件专业,我创建了一个预算编程程序,目前我正在使用函数的某个部分。 我有一个输入框和按钮定义为:在函数内使用.get()访问变量Python/Tkinter 3.4

incomeEntry = Entry(width=15) 
testButton = Button(text="Save", command=Save) 

我的保存功能是:

def Save(): 
    a = incomeEntry.get() 
    return(a) 

a = Save() 
print(a) 

所以我想要做的就是从incomeEntry输入,然后返回它函数之外,所以我可以用它来进行后续计算。 如果我更改a = 3,它将返回3,但它不适用于.get()函数。

任何人都可以帮忙吗?

+0

像'a'这样的变量是对_value_的引用,而不是对另一个变量的引用。像'a = 3'一样,赋值只是将'a'变成对不同值的引用;它不会影响任何具有旧值的其他变量。特别是,它不影响存储在Entry中的值。所以,如果你再次调用'incomeEntry.get()',你仍然可以得到任何显示在'Entry'小部件中的值,而不是3个。如果你想改变它,你必须设置一个新值小部件。 – abarnert

+0

它仍然不会允许我访问入口小部件中的内容并将其打印在函数外部?当我尝试上面的代码时,只是在输入值时不显示任何内容。 @abarnert –

+0

“它不起作用”是什么意思?你有错误吗?什么错误? –

回答

1

IMO的最佳解决方案是使用面向对象的技术来开发你的程序。然后可以使用对象属性来保存值。

例如,以下显示如何通过按钮调用名为Save的函数,然后另一个按钮将打印通过Print按钮保存的内容。

class Example(object): 
    def __init__(self, ...): 
     ... 
     self.savedValue = None 
     self.saveButton = tk.Button(..., command=self.Save) 
     self.printButton = tk.Button(..., command=self.Print) 
     ... 

    def Save(self): 
     ... 
     self.savedValue = "whatever" 
     ... 

    def Print(self): 
     ... 
     print("last saved value: " + self.savedValue) 
     ... 
+0

好吧,如果我这样做,例如,如果它是一个来自外部的整数,我将如何去乘上savedValue?例如,我有单选按钮和它的代码是: '频率= [ ( “每周”, “1”), ( “每两周一次”, “2”), ( “月刊”, “3”), ] v = STRINGVAR() v.set( “1”)#Initalize单选按钮 文本,频率在频率: b = ttk.Radiobutton(帧,文本=文本,变量= v ,value = frequency) b.pack(anchor = SW)' 我该怎么做才能将其中一个单选按钮设置为4,然后用我按下的任何单选按钮乘以savedValue? –

+0

@ KyleR-:确保你的radiobutton变量也是这个类的一个属性,然后你只需要得到这个值,并执行数学运算'self.savedValue * self.radioButtonVar.get()'(如果需要, –