任务:窗口实现通过输入应收金额和实收金额得出找零。
我们可以设置窗口,在窗口中设置两个输入框分别输入应收金额和实收金额,再设置一个按钮,通过点击按钮来获得找零。
首先我们需要导入tkinter包,tkinter 是 Python 中内置的一个标准 GUI(图形用户界面)工具包,用于创建基本的桌面应用程序。
1.创建主窗口
#创建主窗口
root = tk.Tk()#创建主窗口
root.title("收银界面")#设置窗口名称
2.定义输入框
#添加输入框
yingshou_label = tk.Label(root, text="应收金额:")#创建一个标签显示文本应收金额
yingshou_label.pack()#将标签放置在主窗口中
yinghsou_entry = tk.Entry(root)#创建输入框用于输入应收金额
yingshou_entry.pack()#将输入框放置在主窗口中
true_label = tk.Label(root, text="实收金额:")
true_label.pack()
true_entry = tk.Entry(root)
true_entry.pack()
3.定义应找零按钮
#添加按钮
button = tk.Button(root, text="应找零", command=button_click)#设置按钮名称以及点击后的事件
button.pack()#将按钮显示在主窗口
4.定义按钮触发事件函数
#定义函数实现按钮触发后的事件
def button_click():
yingshou = yingshou_entry.get()#获取输入框获得的数据
true = true_entry.get()
if yingshou.isdigit() or true.isdigit(): #因为输入框获取的数据为数值,所以通过isdigit()来判断
if float(true)>float(yingshou):#输入的实收金额应该大于应收金额,因为获取值为字符串类型所以需要转换类型比较
money=float(true)-float(yingshou)#计算应找零
money=round(money,2)#将结果保留两位小数以此来减少精确度出错
result_label.config(text=money)#将结果返回给result_label以便于点击按钮后显示应找零数
else:
result_label.config(text="输入错误,请重新输入")
else:
result_label.config(text="输入错误,请重新输入")#如果输入并非数字提示报错
5.定义按钮触发后的输出
#显示结果的标签
result_label = tk.Label(root, text="")#此时显示的文本将是button函数中返回给result_label的值
result_label.pack()
root.mainloop()#启动主窗口的事件循环,使窗口保持打开状态,直到用户关闭窗口为止
整段代码为
import tkinter as tk
def button_click():
yingshou = yingshou_entry.get()
true = true_entry.get()
if yingshou.isdigit() or true.isdigit():
if float(true)>=float(yingshou):
money=float(true)-float(yingshou)
money=round(money,2)
result_label.config(text=money)
else:
result_label.config(text="输入错误")
else:
result_label.config(text="输入错误")
# 创建主窗口
root = tk.Tk()
root.title("收银界面")
# 添加输入框
yingshou_label = tk.Label(root, text="应收金额:")
yingshou_label.pack()
yingshou_entry = tk.Entry(root)
yingshou_entry.pack()
true_label = tk.Label(root, text="实收金额:")
true_label.pack()
true_entry = tk.Entry(root)
true_entry.pack()
# 添加按钮
button = tk.Button(root, text="应找零", command=button_click)
button.pack()
# 显示结果的标签
result_label = tk.Label(root, text="")
result_label.pack()
root.mainloop()
运行后将会弹出如下窗口
ps:第一次写博客,欢迎大家交流指正!