2014-09-28 88 views
0

我目前正在使用下面的代码,但每次尝试点击calcButt按钮时,它都不会执行任何操作。什么似乎是问题 - 我做错了什么? 我一个月前才开始编码python,所以我对这个很新。 我希望你们能帮助我:)PyCharm不打印结果

from tkinter import * 
import Calculations 

root = Tk() 

# ***** function - is in an imported document ***** 
def calc_kJ(Protein, Carbs, Fat): 
    protein = Protein * 17 
    carbs = Carbs * 17 
    fat = Fat * 37 
    return protein + carbs + fat 

# ***** Labels and inputs ***** 
proteinLabel = Label(root, text="Protein in gram:") 
carbsLabel = Label(root, text="Carbs in gram:") 
fatLabel = Label(root, text="Fat in gram:") 
proteinInput = Entry(root) 
carbsInput = Entry(root) 
fatInput = Entry(root) 

calcButt = Button(text="Calculate amount of kJ", command=Calculations.calc_kJ(Protein=proteinInput.get(), Carbs=carbsInput.get(), Fat=fatInput.get())) 


# ***** Grid layout ***** 
proteinLabel.grid(row=0, sticky=W) 
carbsLabel.grid(row=1, sticky=W) 
fatLabel.grid(row=2, sticky=W) 

proteinInput.grid(row=0,column=1) 
carbsInput.grid(row=1, column=1) 
fatInput.grid(row=2, column=1) 

calcButt.grid(row=3, columnspan=2) 


root.mainloop() 

回答

0

什么是你期待发生什么? calc_kJ返回的值需要去哪里?
您编写代码的方式,该按钮的命令是由calc_kJ返回的值,而不是对该函数的调用。

您将需要一个将输入框中的值传递给calc_kJ函数的函数,并使用返回的值执行适当的操作。喜欢的东西:

def calc(): 
    kJ = calc_kJ(Protein=int(proteinInput.get()), Carbs=int(carbsInput.get()), Fat=int(fatInput.get())) 
    calcButt.config(text=str(kJ)+" kJ") 

正如你可以看到,这个函数首先从入门得到的值,转换成整数,并将其传递给calc_kJ做计算。然后,将返回的值作为按钮的文本。要使用此功能,您必须使用command=calc配置您的按钮。

+0

非常感谢你的确。如前所述,我刚刚刚刚开始编程,所以我很新。但代码现在按预期工作! :) – 2014-09-29 18:25:44