2015-02-09 46 views
0

我想从两个滑块的值设置后,然后使用这些值来创建一个新的变量,这是他们的商。 我发现的代码使用了一个将打印值的函数,但是我需要将值返回到程序的主体,以便我可以创建新变量并且它不工作。 从Tkinter的进口*从tkinter滑块获取值以创建一个变量,这是他们的商

def show_values(): 
    altitude =w2.get() 
    speed = w1.get 
    print (w1.get(), w2.get()) 
    return altitude,speed  #return variables 

master = Tk() 
w1 = Scale(master, from_=0, to=42)  #slider 1 
w1.pack() 
w2 = Scale(master, from_=0, to=200, orient=HORIZONTAL) #slider 2 
w2.pack() 
Button(master, text='Show', command=show_values).pack() #call function 
                  #to get slider 
time = altitude/speed 
mainloop() 
+0

为什么不把'time ='行移动到'show_values'本身?在任何情况下,在用户可能移动任何滑块之前,代码体内的'mainloop'之前出现的任何代码都会在几分之一秒内执行。 (并且在mainloop之后出现的任何代码将永远不会执行,因为mainloop永远循环)。任何取决于用户输入的逻辑都应在回调函数中。 – Kevin 2015-02-09 19:30:49

+0

我认为问题是我不明白mainloop()。我是一位读过Zelle书籍的初学者,所以我更熟悉def main():如何访问函数外的两个变量。我试图从窗口中的滑块获取用户输入,以在main()中执行数学运算。你能提供一个例子吗?在此先感谢 – Cirrus 2015-02-10 00:25:29

回答

0

我可能会downvoted这一点,但我建议使用全局变量。将它们放在函数之前,然后在函数内部设置它们。像这样:

gl_time = 0 

def show_values(): 
    altitude =w2.get() 
    speed = w1.get() 
    global gl_time 
    gl_time = altitude/speed #set global variables to local ones 
+0

对于像这样简单的程序,使用全局变量没有任何坏处。对于任何应用程序变得越来越难以概览,我会推荐使用类。这使得通过'self'在函数间传递变量变得更容易。对于使用一个或多个类的Tkinter程序的一个很好的模板,请参阅[本答案](http://stackoverflow.com/a/17470842/3714930)。 – fhdrsdg 2015-02-09 22:11:13

+0

函数是否需要返回gl_time?我尝试了以及假设该函数修改了gl_time,但打印(gl_time)结果为0 - 初始值为 – Cirrus 2015-02-10 00:11:45

+0

否,因为时间是全局变量。您可以指定一个标签来显示它,然后在show_values()函数的末尾调用master.update()。 – Blue 2015-02-10 00:17:08

相关问题