Was erwartest du? Das while true hämmert wie wild auf die Funktion ctypes.windll.user32.SystemParametersInfoW ein und diese wird den Bildschirm Neuzeichnen, da du mehrfach pro Sekunde den Hintergrund änderst ( wenn auch immer auf das gleiche Bild).
Idealerweise nimmst du sowas wie den Windows Task Scheduler um dein Programm einmal am Morgen und einmal am Abend laufen zu lassen. Solltest du darauf bestehen das dein Python Script die ganze Zeit läuft, kannst du davon ausgehen, dass du nicht so oft wie möglich den Vergleich "rigthnow > night" machen musst. Zumal du ja die aktuelle Uhrzeit auch nicht in der while loop abfragst und sich daher das Ergebnis des Vergleichs nie wieder ändern wird.
Typischerweise würde man in dem While ein sleep einbauen, so das der while loop nur einmal pro Minute durchlaufen wird. (Vielleicht sogar noch weniger, das ist deine Designentscheidung). Außerdem solltest du das Hintergrundbild nur ändern, wenn es zum Umschalten kommt.
Ein minimales Programm könnte so aussehen (untested):
Code: Alles auswählen
import ctypes
import datetime
import time
def main():
wallpaper = None
daytime_start = datetime.time(8, 2, 0)
daytime_end = datetime.time(19, 10, 0)
while True:
now = datetime.datetime.now().time()
if now > daytime_start and now < daytime_end:
# daylight
wallpaper_new = "C:\\Users\\Arthur\\Desktop\\Hintergründe\\lest.jpg"
else:
# night time
wallpaper_new = "C:\\Users\\Arthur\\Desktop\\Hintergründe\\lestabed.png"
if wallpaper != wallpaper_new:
# Change the wallpaper only on demand
wallpaper = wallpaper_new
ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper, 0)
# slow done the loop
time.sleep(1 * 60)
if __name__ == '__main__':
main()