Попытка создать «анимированный» значок перезагрузки, используя функцию l oop изнутри - PullRequest
0 голосов
/ 21 марта 2020

Я делаю приложение на основе python, которое получает данные о погоде от OWM и отображает их на OLED HAT для малинового пи ноль. У меня есть функция с именем getWeatherData (), и я пытаюсь отобразить серию файлов изображений 12 pbm значка перезагрузки. Вот весь метод:

def getWeatherData(currentCity):
global currentWeather
global currentTemp
global tempLow
global tempHigh
global Humidity
global windSpeed
global windDirection
global cityName
global sunSet
global sunRise
global pressure
global dataTimer
global current_BG_num

while getWeatherData:
    if current_BG_num == 12:
        current_BG_num = 0
    reloadBG = Image.open("reload" + str(current_BG_num) + ".pbm").convert('1')
    oled.image(reloadBG)
    with canvas(device, background = reloadBG, dither = True) as draw:
        draw.text((tCR("Updating"), 16), "Updating", font=xlarge, fill="white")
        draw.text((tCR("Weather"), 34), "Weather", font=xlarge, fill="white")
    sleep(0.5)
    current_BG_num = current_BG_num + 1
    break


dataTimer = dataTimeCurrent()
cCW = owm.weather_at_place(currentCity)
print("[INFO] [" + TimeCurrent() + "] Getting Weather Data for " + currentCity)
currentData = cCW.get_weather()
sleep(1)
currentData2 = cCW.get_weather()
currentWeather = currentData.get_status()
currentTemp = round(int(currentData.get_temperature("fahrenheit")["temp"]))
tempLow = round(int(currentData.get_temperature("fahrenheit")["temp_min"]))
tempHigh = round(int(currentData.get_temperature("fahrenheit")["temp_max"]))
windSpeed = round(int(currentData.get_wind(unit='miles_hour')["speed"]))
windDirection = int(currentData2.get_wind()["deg"])
Humidity = int(currentData2.get_humidity())
cityName = currentCity
pressure = int(currentData2.get_pressure()["press"])
sunRise = currentData2.get_sunrise_time()
sunSet = currentData2.get_sunset_time()

if debug == True:
    print("[DEBUG] [" + TimeCurrent() + "] Current Temp: " + str(currentTemp))
    print("[DEBUG] [" + TimeCurrent() + "] Low: " + str(tempLow))
    print("[DEBUG] [" + TimeCurrent() + "] High Temp: " + str(tempHigh))
    print("[DEBUG] [" + TimeCurrent() + "] Humidity: " + str(Humidity) + "%")
    print("[DEBUG] [" + TimeCurrent() + "] Current Weather: " + currentWeather)
    print("[DEBUG] [" + TimeCurrent() + "] Wind Speed: " + str(windSpeed))
    print("[DEBUG] [" + TimeCurrent() + "] Wind Direction: " + str(windDirection))
    print("[DEBUG] [" + TimeCurrent() + "] Pressure: " + str(pressure) + " hpa")

Теперь проблема, с которой я сталкиваюсь, - это время l oop, я подумал, что если бы я сделал

while getWeatherData:

, то запустил бы этот l oop во время работы остальной функции. Я неправильно это понимаю? Есть ли лучший способ выполнить ту же задачу sh? Если я не использую разрыв, он запускает анимацию в бесконечном l oop, и если я удаляю его, он просто проходит по каждому отдельному изображению, когда я вызываю функцию.

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