如何更新python gui?
我想每秒钟更新一次我的gui(我其实不在乎时间,但它应该是实时的)。我得到了一个脚本,其中作为int的标签应该增加1并显示出来。但是我没有得到更改,我也想根据根的宽度放置标签,但它不会更新。只有更新是个问题,也许有人可以帮我。(我是个新手) 脚本:如何更新python gui?,python,tkinter,Python,Tkinter,我想每秒钟更新一次我的gui(我其实不在乎时间,但它应该是实时的)。我得到了一个脚本,其中作为int的标签应该增加1并显示出来。但是我没有得到更改,我也想根据根的宽度放置标签,但它不会更新。只有更新是个问题,也许有人可以帮我。(我是个新手) 脚本: from tkinter import * import time c = 0 root = Tk() root.title("Real Time Plot") root.minsize(width = 200, height
from tkinter import *
import time
c = 0
root = Tk()
root.title("Real Time Plot")
root.minsize(width = 200, height = 300)
m = root.winfo_reqwidth() / 2
root.update()
Text = Label(root, text = c)
Text.place(x =m, y = 150)
c = c + 1
print(m)
root.mainloop()
您只更新变量值,而不是标签的值。 增加标签后,需要使用c的内容更新标签:
Text.configure(text=c)
所以它变成了这样:
from tkinter import *
import time
c = 0
root = Tk()
root.title("Real Time Plot")
root.minsize(width = 200, height = 300)
m = root.winfo_reqwidth() / 2
root.update()
Text = Label(root, text = c)
Text.place(x =m, y = 150)
root.update()
time.sleep(2)
c = c + 1
Text.configure(text=c)
root.update()
print(m)
root.mainloop()
我对您的代码做了一些小的更新,比如添加了睡眠时间,以更好地显示行为。您必须使用Python线程,它将完美地执行此操作强> 代码如下:
from tkinter import *
import threading
import time
def realtime_update():
while True:
global c, Text
c += 1
Text.configure(text=c+1)
time.sleep(0.001)
root_width = root.winfo_geometry()
root_width = root_width.split('x')
root_width = int(root_width[0])
Text.place(x=root_width/2, y=150)
time.sleep(0.01)
c = 0
root = Tk()
root.title("Real Time Plot")
root.minsize(width = 200, height = 300)
m = root.winfo_reqwidth() / 2
Text = Label(root, text = c)
Text.place(x=int(m), y = 150)
print(m)
threading.Thread(target=realtime_update, daemon=True).start()
root.mainloop()
它解决了以下问题:
我已经创建了一个计时器,所以我想你可以像我那样做。希望这对你有用 首先,创建一个StringVar: text=StringVar(value=“text”) 然后用textvariable创建一个标签。 yourlabel=Label(根,textvariable=Text) 然后创建一个函数来更新yourlabel: yourlab.set(在这里传递新值)
因此,您的标签将具有您传递的值。因此,您可以使用self.after之类的工具每1000毫秒更新一次func。不工作。值从
0
更改为1
,并在此处停止。OP写道:“只有更新是个问题,也许有人可以帮我解决。”。提供的代码更新了该值,并清楚地说明了如何执行该操作。所以,当你评论别人提供的解决方案时,也许你应该更加小心。谈到OP,他清楚地说了一个词Realtime,我相信你错过了。另外,他说要根据根的宽度来贴标签,这也是你错过的。那么,也许你应该仔细阅读这个问题,或者至少写一个工作代码。谢谢大家的快速回复@Samaksh Gupta,我查看了你的代码,找到了一个解决宽度和高度问题的替代方法:root\u height=root.winfo\u height()root\u height=int(root\u height)
只有在你的代码帮助下才可能,谢谢:)我只是想知道如何更新tkintergui,但谢谢你的回复。