如何更新Tkinter标签?

时间:2015-09-12 03:20:44

标签: python file tkinter

如何通过点击按钮更新Tkinter标签?我正在创建一个Tkinter程序来读取和写入文件,然后将每行打印到标签中。我有一个部分要在文件中添加文本,所以我需要一种方法来更新标签。

到目前为止,这是我的代码:

from Tkinter import *
import sys
f=open("stats")
line1=f.readline()
line2=f.readline()
line3=f.readline()
line4=f.readline()
line5=f.readline()
line6=f.readline()
line7=f.readline()
line8=f.readline()
line9=f.readline()
line10=f.readline()

def write():
      f=open("stats", "w")
      f.write(e1.get())
      f.write(" ")
      f.write(e2.get())
      f.write("\n")
      e1.delete(0, END)
      e2.delete(0, END)

root=Tk()
root.title("Basketball Stats")
l1=Label(text="Player").grid(column=0, row=0)
l2=Label(text="Number").grid(column=0, row=1)
e1=Entry().grid(column=1, row=0)
e2=Entry().grid(column=1, row=1)
b1=Button().grid(column=1, row=3)
b1.config(text="Submit", command=write)
l3=Label(text=line1).grid(column=0, row=4)
l4=Label(text=line2).grid(column=0, row=5)
l5=Label(text=line3).grid(column=0, row=6)
l6=Label(text=line4).grid(column=0, row=7)
l7=Label(text=line5).grid(column=0, row=8)
l8=Label(text=line6).grid(column=0, row=9)
l9=Label(text=line7).grid(column=0, row=10)
l10=Label(text=line8).grid(column=0, row=11)
l11=Label(text=line9).grid(column=0, row=12)
l12=Label(text=line10).grid(column=0, row=13)
root.mainloop()

1 个答案:

答案 0 :(得分:1)

编辑:根据我的想法来判断你想要去做什么并使代码更加pythonic。我简化了制作标签的过程,同时允许将新输入附加(不覆盖现有内容)到" stats"。现在,每次按下“提交”按钮时,您的写入功能都会在底部添加一个新标签。

from Tkinter import *
import sys

def write():
    new_player = e1_var.get() + " " + e2_var.get()
    with open('stats', 'a') as file:
        file.write("\n" + new_player + "\n")

    players[new_player] = Label(text=new_player).grid(column=0)
    e1_var.set("")
    e2_var.set("")

root=Tk()
root.title("Basketball Stats")
l1=Label(text="Player").grid(column=0, row=0)
l2=Label(text="Number").grid(column=0, row=1)

e1_var = StringVar()
e1 = Entry(textvariable=e1_var).grid(column=1, row=0)

e2_var = StringVar()
e2 = Entry(textvariable=e2_var).grid(column=1, row=1)

b1=Button(text="Submit", command=write).grid(column=1, row=3)

players = {}
with open("stats", "r") as file:
    for line in file.read().split('\n'):
        players[line] = Label(text=line).grid(column=0)

root.mainloop()

这是您新的更好的代码!