我正在为我的编程简介课程完成最后的项目,而且我最难使用Tkinter和Python。
这是我的任务: 让用户从他们的薪水中输入他们的收入。然后,该计划将进行以下计算:他们60%的收入用于支出,什么是两个短期和长期储蓄的10%,以及他们20%的无薪支出薪水?
一旦程序完成计算,它将显示每个计算,以便用户可以使用他们的帐户进行适当的转移。
以下是我目前的代码:
from tkinter import *
from tkinter import ttk
def calculate(*args):
try:
value = float(income.get())
expenses.set(value * .60)
shortSavings.set(value * .10)
longSavings.set(value * .10)
guiltFree.set(value * .20)
except ValueError:
pass
root = Tk()
root.title("Monthly Finance Calculater")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
income = StringVar()
expenses = StringVar()
shortSavings = StringVar()
longSavings = StringVar()
guiltFree = StringVar()
income_entry = ttk.Entry(mainframe, width=7, textvariable=income)
income_entry.grid(column=2, row=1, sticky=(W, E))
expenses = ttk.Entry(mainframe, width=7, textvariable=expenses)
expenses.grid(column=2, row=1, sticky=(W, E))
ttk.Label(mainframe, textvariable=income).grid(column=2, row=2, sticky=(W, E))
ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=3, row=3, sticky=W)
income_entry.focus()
root.bind('<Return>', calculate)
root.mainloop()
我一直在寻找好几天,而且我完全陷入困境。我不希望这样做,但我真的可以使用一些指导和建议,如何使用Tkinter在GUI中完成这项工作。
答案 0 :(得分:1)
Max已经提到过一个问题。第二个问题是这个问题:
except ValueError:
pass
很明显,如果你传递一个例外,你什么都得不到。至少使用一个打印,这样您就会得到控制台中显示的错误:
except Exception as ex:
print(ex)
我看到的最后一个真正的问题是你使用变量expenses
两次!第一次作为StringVar()
,第二次作为Entry
。最后你没有StringVar,因为你覆盖它。
还要考虑标记你的托管,因为用户还不知道他在那里进入了什么。此外,学习如何在eclipse中使用调试器,它比你想象的要容易得多。所以你可以自己找到bug。祝你的项目好运。
答案 1 :(得分:0)
据我所见,是:
income_entry = ttk.Entry(mainframe, width=7, textvariable=income)
income_entry.grid(column=2, row=1, sticky=(W, E))
和
expenses = ttk.Entry(mainframe, width=7, textvariable=expenses)
expenses.grid(column=2, row=0, sticky=(W, E))
位于同一列和行上,这意味着一个不可见,将两者中的一个更改为另一行,因此它显示两个输入字段。
这可能解决了为什么你没有看到任何东西,但是我不确定你的意思。