【发布时间】:2018-08-22 13:33:10
【问题描述】:
我正在尝试制作一个简单的付款模块,并通过尝试处理一个小项目/脚本来更好地理解 python。这是我的模块之一的代码:
from tkinter import *
root=Tk()
t1=IntVar()
t2=StringVar()
t3=IntVar()
t4=IntVar()
t5=IntVar()
t6=IntVar()
def verify():
with open('dbase.txt') as x:
input1 = t1.get()
code=[input1]
for n, line in enumerate(x, 1):
split_line = line.split()
for i in code:
if i in split_line:
item=n+1
sale_price=n+2
purchase_price=n+3
u=x.readline(item)
w=x.readline(sale_price)
v=x.readline(purchase_price)
t2.set(u)
t3.set(int(w))
t4.set(int(v))
def saved():
change=int(t5.get())-int(t3.get())
t6.set(change)
l1=Label(root, text='Code').grid(column=0, row=0)
e1=Entry(root, text=t1).grid(column=1, row=0)
b1=Button(root, text='Verify', command=verify).grid(column=1, row=1)
l2=Label(root, text='Item').grid(column=0, row=2)
e2=Entry(root, text=t2).grid(column=1, row=2)
l3=Label(root, text='Sale Price').grid(column=0, row=3)
e3=Entry(root, text=t3).grid(column=1, row=3)
l4=Label(root, text='Purchase Price').grid(column=0, row=4)
e4=Entry(root, text=t4).grid(column=1, row=4)
l5=Label(root, text='Amount Paid').grid(column=0, row=5)
e5=Entry(root, text=t5).grid(column=1, row=5)
b1=Button(root, text='Save', command=saved).grid(column=1, row=6)
l5=Label(root, text='Change').grid(column=0, row=7)
e5=Entry(root, text=t6).grid(column=1, row=7)
这里是读取代码的 .txt 文件:
1001
sugar
20
30
带有 tkinter 的 GUI 有一些输入字段。挑战在于,一旦传递了按钮上的命令,就无法将 IntVar() t2、t3、t4 和 t6 设置为显示金额。代码哪里出错了,有什么更好的处理方法?
【问题讨论】:
-
.readline()的可选参数是要读取的最大字符数 - 您似乎希望它是行号。 -
帮助我理解。我的观点是代码行中的 'n': for n, line in enumerate(x, 1): ,行拆分,以及 (n+1, n+2)...) 的行位置都是用于定位 x 中某些行的位置。因此,当我编写 .readline(line_position) 时,它现在不是返回所选 line_position 中的项目或数字列表吗?
-
.readline()开始的位置始终是上一次读取结束的位置(或者由.seek()设置)。您可以对参数执行的唯一操作是限制行长度,这可能会导致读取部分行。如果您想按编号访问行,最简单的方法是使用.readlines()(注意“s”)读取整个文件一次,然后索引到返回的列表中。
标签: python-3.x loops search tkinter