Как заставить скрипт Python Tkinter принимать переменные каждые X секунд? - PullRequest
0 голосов
/ 25 октября 2018

Сначала извините мои плохие навыки кодирования.Только начал изучать около недели назад

В любом случае, я пытаюсь прямо сейчас создать графический интерфейс для этого элемента погоды / часов для проекта.Прямо сейчас мне это нужно, чтобы графический интерфейс, который я думал об использовании Tkinter, обновлялся каждую секунду и в основном извлекал строки из этой программы.В настоящее время программа вычисляет время восхода и захода солнца и лунного цикла.

Пока что я пробовал два способа, первый способ, запускающий всю программу по одному сценарию, но он не работает из-за 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 обновляет каждый раз, когда изменяются различные переменные, секунды, минуты, часы, день, месяц и moon_phase.
  • Или есть способ обойти mainloop () tkinter и простозаставить его работать, пока True: loop тоже?
  • Или любой другой лучший способ сделать это.

Я видел, что вы можете позволить Tkinter отслеживать время, делая цифровые часы такого родано мне нужны вычисления, а также я также посылаю переменные в Arduino (но я уже понял это).

Любая помощь очень ценится, спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Вы импортируете переменную из функции.Я думаю, вам следует импортировать класс (сначала реструктурировать day.py как класс), а затем вызвать метод mooninfo (), чтобы вернуть значение переменной moon_phase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...