Tkinter 不断崩溃:在循环中更新标签 (StringVar())
Tkinter keeps crashing: updating label in loop (StringVar())
我在创建可自行更新的标签时遇到问题。使用 while
循环后,我的 Tkinter window 崩溃了。就我而言,我不会创建多个标签并将它们堆叠在一起,这会导致程序崩溃而不更新标签。我能做些什么更好?
提前致谢!!
有循环:
def testfunction():
while True :
f = open("exchange.txt", "r")
insert = f.read()
f.close()
if insert != var:
var.set(insert)
root = Tk()
var = StringVar()
var.set("start")
root.geometry("1920x150+-10+-35")
frame_main = Frame(root, bg="black")
frame_main.place(relwidth=1, relheight=1, relx=0, rely=0)
label = Label(root,width=10,textvariable=var, font='Helvetica 14 bold',bg="black", fg="yellow")
label.place(relwidth=0.9, relheight=0.9, relx=0.05, rely=0.1)
root.after(200, testfunction)
root.mainloop()
重要编辑:
当我通过这个脚本打开它时,这一切都发生了。
# writes down:
subprocess.Popen("python -i tkinter_samentha_tricks.py")
while True:
r = random.randint(1,6)
f = open("exchange.txt", "w+")
if r==1 or r==2:
f.write("1 or 2")
f.close
print(r)
使用 while 循环将阻止 tkinter 更新小部件,请改用 after()
:
def testfunction():
try:
with open("exchange.txt", "r") as f:
insert = f.read()
if insert != var.get():
var.set(insert)
except FileNotFoundError:
#print('file not found')
pass
root.after(100, testfunction)
我在创建可自行更新的标签时遇到问题。使用 while
循环后,我的 Tkinter window 崩溃了。就我而言,我不会创建多个标签并将它们堆叠在一起,这会导致程序崩溃而不更新标签。我能做些什么更好?
提前致谢!!
有循环:
def testfunction():
while True :
f = open("exchange.txt", "r")
insert = f.read()
f.close()
if insert != var:
var.set(insert)
root = Tk()
var = StringVar()
var.set("start")
root.geometry("1920x150+-10+-35")
frame_main = Frame(root, bg="black")
frame_main.place(relwidth=1, relheight=1, relx=0, rely=0)
label = Label(root,width=10,textvariable=var, font='Helvetica 14 bold',bg="black", fg="yellow")
label.place(relwidth=0.9, relheight=0.9, relx=0.05, rely=0.1)
root.after(200, testfunction)
root.mainloop()
重要编辑: 当我通过这个脚本打开它时,这一切都发生了。
# writes down:
subprocess.Popen("python -i tkinter_samentha_tricks.py")
while True:
r = random.randint(1,6)
f = open("exchange.txt", "w+")
if r==1 or r==2:
f.write("1 or 2")
f.close
print(r)
使用 while 循环将阻止 tkinter 更新小部件,请改用 after()
:
def testfunction():
try:
with open("exchange.txt", "r") as f:
insert = f.read()
if insert != var.get():
var.set(insert)
except FileNotFoundError:
#print('file not found')
pass
root.after(100, testfunction)