python - 我被困在试图修复第 78 行
问题描述
我已经完全重做我的代码,并且在第 78 行出现语法错误,pennies=float(int(pennies.get())*.01.format$(.2f)
位于pennies.get()
. 箭头指向便士和得到之间的时间段。我对此真的很陌生,我不知道如何解决这个错误。我最初发布了不同的代码,但它不正确。
代码:
from tkinter import*
money=Tk()
money.title("The amount of Money on hand")
Label(money,text='****Please provide the money you have and hit, Compute:***').grid(row=0,columnspan=5)
Label(money,text='Pennies').grid(row=1,column=0)
Label(money,text='Nickels').grid(row=2,column=0)
Label(money,text='Dimes').grid(row=3,column=0)
Label(money,text='Quarters').grid(row=4,column=0)
Label(money,text='Half Dollar Coin').grid(row=5,column=0)
Label(money,text='Dollar Coin').grid(row=6,column=0)
Label(money,text='Cash Dollar').grid(row=7,column=0)
Label(money,text='Cash 5 Dollar').grid(row=8,column=0)
Label(money,text='Cash 10 Dollar').grid(row=9,column=0)
Label(money,text='Cash 20 Dollar').grid(row=10,column=0)
Button(money,text='Quit',command=money.destroy).grid(row=11,column=0,sticky=W,pady=5)
Pennies=Entry(money)
Pennies.grid(row=1,column=1)
Nickels=Entry(money)
Nickels.grid(row=2,column=1)
Dimes=Entry(money)
Dimes.grid(row=3,column=1)
Quarters=Entry(money)
Quarters.grid(row=4,column=1)
Half_Dollar_Coin=Entry(money)
Half_Dollar_Coin.grid(row=5,column=1)
Dollar_Coin=Entry(money)
Dollar_Coin.grid(row=6,column=1)
Cash_Dollar=Entry(money)
Cash_Dollar.grid(row=7,column=1)
Cash_5_Dollar=Entry(money)
Cash_5_Dollar.grid(row=8,column=1)
Cash_10_Dollar=Entry(money)
Cash_10_Dollar.grid(row=9,column=1)
Cash_20_Dollar=Entry(money)
Cash_20_Dollar.grid(row=10,column=1)
Label(money,text='Pennies Value $:').grid(row=1,column=2)
Label(money,text='Nickels Value $:').grid(row=2,column=2)
Label(money,text='Dimes Value $:').grid(row=3,column=2)
Label(money,text='Quarters Value $:').grid(row=4,column=2)
Label(money,text='Half Dollar Coin Value $:').grid(row=5,column=2)
Label(money,text='Dollar Coin Value $:').grid(row=6,column=2)
Label(money,text='Cash Dollar Value $').grid(row=7,column=2)
Label(money,text='Cash 5 Dollar Value $').grid(row=8,column=2)
Label(money,text='Cash 10 Dollar Value $:').grid(row=9,column=2)
Label(money,text='Cash 20 Dollar Value $:').grid(row=10,column=2)
Label(money,text='Total').grid(row=11,column=2)
Pennies=Entry(money)
Pennies.grid(row=1,column=3)
Nickels=Entry(money)
Nickels.grid(row=2,column=3)
Dimes=Entry(money)
Dimes.grid(row=3,column=3)
Quarters=Entry(money)
Quarters.grid(row=4,column=3)
Half_Dollar_Coin=Entry(money)
Half_Dollar_Coin.grid(row=5,column=3)
Dollar_Coin=Entry(money)
Dollar_Coin.grid(row=6,column=3)
Cash_Dollar=Entry(money)
Cash_Dollar.grid(row=7,column=3)
Cash_5_Dollar=Entry(money)
Cash_5_Dollar.grid(row=8,column=3)
Cash_10_Dollar=Entry(money)
Cash_10_Dollar.grid(row=9,column=3)
Cash_20_Dollar=Entry(money)
Cash_20_Dollar.grid(row=10,column=3)
Total=Entry(money)
Total.grid(row=11,column=3)
def total_result():
Pennies=float(int(Pennies.get())*.01)
Nickels=float(int(Nichols.get())*.05)
Dimes=float(int(Dimes.get())*.10)
Quarters=float(int(Quarters.get())*.25)
Half_Dollar_Coin=float(int(Half_Dollar_Coin.get())*.50)
Dollar_Coin=float(int(Dollar_Coin.get())*1)
Cash_Dollar=float(int(Cash_Dollar.get())*1)
Cash_5_Dollar=float(int(Cash_5_Dollar.get())*5)
Cash_10_Dollar=float(int(Cash_10_Dollar.get())*10)
Cash_20_Dollar=float(int(Cash_20_Dollar.get())*20)
result='Pennies' + 'Nickels' + 'Dimes' + 'Quarters' + 'Half_Dollar_Coin' + 'Dollar_Coin' + 'Cash_Dollar' +'Cash_5_Dollar' + 'Cash_10_Dollar' + 'Cash_20_Dollar'
Button(money,text='Compute',command=total_result).grid(row=11,column=1,sticky=E,pady=5)
def only_numeric_input(x):
if e.isdigit():
return True
elif e=="":
return True
else:
return True
Pennies.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Nickels.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Dimes.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Quarters.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Half_Dollar_Coin.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Dollar_Coin.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Cash_Dollar.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Cash_5_Dollar.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Cash_10_Dollar.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Cash_20_Dollar.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
在等待帮助时,我将尝试在 Python 中重新输入它。谢谢!
解决方案
当您创建用于显示值的条目时,您会重新使用输入条目中的名称,从而丢失对输入条目的引用。我改为重命名条目以显示值Pennies_value
等。
再次在函数中total_result()
重新分配输入条目的名称,这次是引用浮点数。
如果您希望能够进行多次计算,您必须首先从条目中删除所有内容。然后将计算的值写入条目。
如果输入条目包含“”,则计算将不起作用,因此在这种情况下您必须将值转换为 0。我正在使用以下表达式执行此操作:
int(Pennies.get() or 0)
它评估来自Pennies.get()
: 如果它是False
("") 的返回,则该int()
函数将使用 0 代替。
最后,当您计算总数时,您必须从显示条目中获取值。请参见下面的示例:
from tkinter import*
money = Tk()
money.title("The amount of Money on hand")
Label(money,text='****Please provide the money you have and hit, Compute:***').grid(row=0, columnspan=5)
Label(money,text='Pennies').grid(row=1, column=0)
Label(money,text='Nickels').grid(row=2, column=0)
Button(money, text='Quit', command=money.destroy).grid(row=11, column=0, sticky=W, pady=5)
# Entrys for number of coins/bills
Pennies = Entry(money)
Pennies.grid(row=1, column=1)
Nickels = Entry(money)
Nickels.grid(row=2, column=1)
Label(money, text='Pennies Value $:').grid(row=1, column=2)
Label(money, text='Nickels Value $:').grid(row=2, column=2)
Label(money, text='Total').grid(row=11, column=2)
# Entrys for display of value of coins/bills
Pennies_value = Entry(money)
Pennies_value.grid(row=1, column=3)
Nickels_value = Entry(money)
Nickels_value.grid(row=2, column=3)
Total_value = Entry(money)
Total_value.grid(row=11, column=3)
def total_result():
Pennies_value.delete(0, "end") # Delete entry contents from pos 0 till "end"
Pennies_value.insert(0, int(Pennies.get() or 0)*.01) # Insert text at pos 0
Nickels_value.delete(0, "end")
Nickels_value.insert(0, int(Nickels.get() or 0)*.05)
result = (float(Pennies_value.get()) +
float(Nickels_value.get()))
Total_value.delete(0, "end")
Total_value.insert(0, result)
Button(money, text='Compute', command=total_result).grid(row=11, column=1, sticky=E, pady=5)
def only_numeric_input(e):
if e.isdigit():
return True
elif e=="":
return True
else:
return False
# Configure input Entrys validation
Pennies.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
Nickels.configure(validate='key',validatecommand=(money.register(only_numeric_input),'%P'))
money.mainloop()
推荐阅读
- android - Android Microsoft Translator API-获取支持翻译文本的语言时出错
- vba - Excel:当最后一列更改编号时如何获取最后一列的列索引号
- jquery - 关闭引导程序 3 模态后滚动正文
- java - 如何在我的 Gluon Mobile 项目中更改 jdk?
- python - 使用子进程从 input() 交互式运行多个命令
- c# - 使用 XAML 样式的 WPF 3d 按钮样式
- java - Selenium Java 为 element.isDisplayed 返回不正确的结果
- android - 无法启动活动 ComponentInfo。java.lang.NullPointerException:Firestore 组件不存在
- laravel - 我的 laravel+Vuejs2 应用程序最好的服务器或云托管是什么?
- r - 在绘图矩阵中添加多个 R^2 值的简单方法