【发布时间】:2020-04-19 17:25:16
【问题描述】:
对不起,奇怪的代码...这是 7 小时尝试让事情正常工作的结果。
我想通过 python 和 tkinter 在文本文件中捕获数量、名称、价格和含增值税价格。
到目前为止,我可以成功地将数量、名称、价格写入文本,但是,我似乎无法弄清楚如何获取价格、计算价格并将答案写入文本。
我尝试以多种方式绕过 int vs str 问题,包括计算价格和使用 .insert() 将答案发送到 Ent5(输入框)并使用 .get() 检索答案以将其写入文本,但我得到一个错误代码。 -->
“TypeError:不能将序列乘以'float'类型的非整数”
我正在使用 .pack() 来加快进入网格之前的测试速度,并且我知道网格更好。
下面是一小段代码:
import tkinter as tk
from tkinter import *
import math
top = tk.Tk()
top.title('Name')
top.geometry('500x450')
v = IntVar()
Ent1 = tk.Entry(top, textvariable=v, show=None, font=('Arial', 16))
Ent2 = tk.Entry(top, show=None, font=('Arial', 16))
Ent3 = tk.Entry(top, textvariable=vT, show=None, font=('Arial', 16))
Ent5 = tk.Entry(top, show=None, font=('Arial', 16)) ###PLACEHOLDER
lbl1 = tk.Label(top, text='Quantity')
lbl2 = tk.Label(top, text='Product')
lbl3 = tk.Label(top, text='Price')
lbl1.pack()
Ent1.pack()
lbl2.pack()
Ent2.pack()
lbl3.pack()
Ent3.pack()
Ent5.pack() ###PLACEHOLDER
int_answers = int(Ent3.get())
def com2():
km = int_answers*1.15
Ent5.insert(0, '1.15') ### PLACEHOLDER
def com1():
com2()
file1 = open('eca.txt', 'a')
L = [Ent1.get(), ' | ' , Ent2.get(), ' | ' , Ent3.get(), km,'\n']
file1.writelines(L)
file1.close()
Btn1 = tk.Button(top, command=com1, text='Ok').pack(side=BOTTOM)
top.mainloop()
提前感谢您的帮助
【问题讨论】:
-
只是添加 ### PLACEHOLDER 部分根本没有使用,只是随机尝试不同的东西。
-
在修复错误
name 'vT' is not defined后运行您的代码时,我无法收到上述错误(在Ent3 = tk.Entry(top, textvariable=vT, ...)行中。
标签: python math tkinter calculation