我是python的新手,我对tkinter有点问题 是的,我知道如何使用谷歌,但我还没有找到它的解决方案。也许因为我真的不知道如何寻找和寻找什么,也许是因为我的英语不好:P。
我有3个功能
tick()
#refresh每个200毫秒的时间,如果时间不是旧时间refreshT()
#刷新温度(从3个文件中读取)refreshW()
#refresh天气小工具(图片)他们在200ms,每5s和每30m之后自称。
问题是,如果调用refreshT,时间不会更新约2秒。
我已经阅读了有关线程here的内容,但我并不理解。 所以,我的问题是我如何才能给一个特定的功能提供更高的优先级,或者做任何其他事情继续运行的事情呢?
我不希望完成代码只是一些关于某些模块的信息,或者是我正在寻找的模块。
如果相关的话,我在raspi 3b上使用raspbian。
以下是代码的有趣部分:
#Python 3.5.3:
#(...)
def tick():
try: #tests if there is an old time to compare
timeOld #if not, set it to none
except NameError:
timeOld = None
timeNew = getTime(1) #a module ive written, returning the time
#in a specific order
if timeOld != timeNew: #compare (this is to avoid running the
#function to often, better for performance
clock.config(text=timeNew) #display the new time
timeOld = timeNew #set the old time to the actual time
clock.after(200, tick) #call itself after 200ms
def refreshT(): #refreshing temperatures
tempCpu.config(text=(round(float(open('/sys/class/thermal/thermal_zone0/temp').read())/1000, 1),'°C'))
tempIns.config(text=(round(float(open('/sys/bus/w1/devices/28-0417a312a0ff/w1_slave').read().split('t=')[1])/1000, 1),'°C'))
tempOut.config(text=(round(float(open('/sys/bus/w1/devices/28-0517a27018ff/w1_slave').read().split('t=')[1])/1000, 1),'°C'))
tempCpu.after(5000, refreshT) #call itself after 5 sec
def refreshW(refresh=True):
if refresh == True:
weather_raw = createImg(Ids[1])
weather.config(image=weather_raw) #reload image
weather.image = weather_raw
weather.after(1800000, refreshW) #call itself after 30min
#(...)
root = Tk()
#(...)
clock = Label(
root,
font=('Helvetica', 50),
text=texts[0],
fg='white',
bg='black',
cursor='none'
)
clock.place(
relx=0.5,
y=242,
anchor='n'
)
tempCpu = Label(
root,
font=('Helvetica', 40),
text='$CPU°C',
fg='white',
bg='black',
cursor='none'
)
tempCpu.place(
relx=0.2,
y=100,
anchor='n'
)
tempIns = Label(
root,
font=('Helvetica', 40),
text='$INS°C',
fg='white',
bg='black',
cursor='none'
)
tempIns.place(
relx=0.5,
y=100,
anchor='n'
)
tempOut = Label(
root,
font=('Helvetica', 40),
text='$OUT°C',
fg='white',
bg='black',
cursor='none'
)
tempOut.place(
relx=0.8,
y=100,
anchor='n'
)
tick()
refreshT()
refreshW(False)
root.mainloop()
如果此代码不起作用,here是Github上的完整代码。
希望得到帮助或链接到答案,对不起,如果这是重复的话。