当我在 TKINTER 中按城市获取学生数据时,它只显示最后一个值



正如我所提到的,我想打印来自城市的学生的数据,但在标签中,它只显示一个数据,终端显示所有数据

我正在使用for循环打印数据

from tkinter import *
from tkinter import messagebox
# from normalfile import *
window=Tk()
window.geometry("800x500")
window.config(bg="yellow")

varlbl=Label(text="Welcome to Program")
varlbl.pack()
varname=Label(text="name")
varname.pack()
txtname=Entry()
txtname.pack()
varroll=Label(text="RollNo")
varroll.pack()
txtroll=Entry()
txtroll.pack()
varper=Label(text="Percentage")
varper.pack()
txtper=Entry()
txtper.pack()

cityValue=StringVar()
City1=Radiobutton(text="Ahemdabad",value="Ahemdabad",variable=cityValue)
City1.pack()  
City2=Radiobutton(text="Gandhinagar",value="Gandhinagar",variable=cityValue)
City2.pack()  
City3=Radiobutton(text="Surat",value="Surat",variable=cityValue)
City3.pack()  

def Insert():
name=txtname.get()
rollno=txtroll.get()
perc=txtper.get()
city=cityValue.get()
f=open("demo.txt","a")
f.write(f"{name} {rollno} {perc} {city}n")
messagebox.showinfo("gui file","Data Saved :")
f.close()

def showData():
f=open("demo.txt")    
data=f.read()
lbl['text']=data
f.close()

def rollno():
rollno1=txtroll.get()
f=open("demo.txt","r")    
for value in f:
roll=value.split()
if roll[1]==rollno1:
rolllbl['text']=value
def City():
city=cityValue.get()
fr=open("demo.txt",'r')
for value in fr:
citylist=value.split()
if citylist[3]==city:
citylbl['text']=value
print(value)
btn=Button(text="ADD",command=Insert)
btn.pack()
btn2=Button(text="Show",command=showData)
btn2.pack()
btn3=Button(text="Search by rollno",command=rollno)
btn3.pack()
btn4=Button(text="Search by City",command=City)
btn4.pack()
lbl=Label(bg="white")
lbl.pack()
rolllbl=Label(bg="pink")
rolllbl.pack()
citylbl=Label(bg="grey")
citylbl.pack()
window.mainloop()

这是文本文件

dhaval 1 72 Gandhinagar
farhan 2 22 Ahemdabad
kinjal 3 72 Surat
dhaval 4 72 Gandhinagar
utsav 5 65 Ahemdabad
uday 6 87 Gandhinagar
piku 7 99.99 Surat
kema 8 59 Ahemdabad
johnbezod 007 99.100 Surat
johnbezod 007 99.100 Surat

如果选择苏拉特,则预期结果

kinjal 3 72 Surat
piku 7 99.99 Surat        
johnbezod 007 99.100 Surat
johnbezod 007 99.100 Surat

在循环中每次都覆盖citylbl['text']=value。您需要进行连接,以便获得所有值。

def City():
city=cityValue.get()
fr=open("demo.txt",'r')
citylbl['text'] = ''
for value in fr:
citylist=value.split()
if citylist[3]==city:
citylbl['text'] += value + 'n'
print(value)

相关内容

最新更新