如何使Tkinter python脚本每X秒变一次?

时间:2018-10-24 22:14:30

标签: python tkinter

首先请原谅我糟糕的编码技能。大约一周前才开始学习

无论如何,我现在正在尝试为此项目的天气/时钟事件创建一个GUI。现在我需要它,以便我在考虑使用Tkinter的GUI每秒更新一次,并且基本上从该程序中提取字符串。目前,该程序会计算日出和日落的时间以及农历周期。

到目前为止,我尝试了两种方法,第一种方法是在一个脚本下运行整个程序,但是由于mainloop()阻止了第二天重复进行计算,因此无法正常工作。

所以现在我希望将程序分为两部分。一个带有计算,另一个作为主GUI程序。所以我所做的基本上是这样。

简化的计算脚本(很长,所以我写了重要的部分):

它的day.py

import datetime
import math
import schedule
import astral

a = Astral()

def tick():
    d = datetime.datetimee.today()
    second = d.second
    minutes = d.minute
    hour = d.hour
    month = d.month
    print(str(hour) + ":" + str(minute) + ":" + str(second))

def mooninfo():
    global percent_illuminate
    global moon_phase
    moon_phase = a.moon_phase(date=datetime.date(year,month,day)
    percent_illuminate = VERY LONG EQUATIONS
    print("Moon is at... " + str(moon_phase))
    print(percent_illuminate)

schedule.every(1).second.do(tick)
schedule.every().day.do(mooninfo)

while True:
    schedule.run_pending()

对于tkinter脚本,我尝试了

from day import moon_phase

它不再只是导入moon_phase,而是开始运行程序以打印出一天中的不间断时间。

所以如果有人可以帮助我

  • 让tkinter脚本每次都更改不同的变量(秒,分钟,小时,天,月和月相)时进行更新。
  • 或者是否有一种方法可以绕过tkinter的mainloop()并使其在True:循环下运行?
  • 或其他更好的方法。

我看到您可以让Tkinter跟踪制作数字时钟的时间,但是我需要进行计算,而且我也将变量发送到Arduino(但我已经知道了)。

非常感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:0)

您正在从函数中导入变量。我认为您应该导入该类(首先将day.py重组为一个类),然后调用mooninfo()方法以返回moon_phase变量的值。