Witam, piszę program do własnego użytku w pythonie. Jego zadanie jest proste, ma pobierać poszczególne dane z bazy mysql z ostatniej linii i wyświetlić na ekranie. Do tego ma wyświetlać aktualny czas i co 60 sekund odświeżać dane z tabeli. Mam taki kod:
import tkinter as tk
import mysql.connector
import datetime as dt # dla obsługi daty i czasu
class Application:
def __init__(self):
self.window = tk.Tk()
self.window.geometry("800x600")
self.window.configure(background="black")
self.rozmiarWartosci = 28
self.lb_clock = tk.Label(self.window, font = ("Times New Roman", 45), bg = "black", fg = "white")
self.lb_clock.pack()
self.timer() # pierwsze wywołanie metody timer
self.sypialnia_pokoj() # wywolanie sypialni
self.rama = tk.LabelFrame(self.window, text = "Dane Pogodowe - Sypialnia", bg = "black", fg = "white", padx=5, pady = 5)
self.rama.pack(padx=5, pady=5)
self.r2 = tk.LabelFrame(self.rama, padx=5, pady=5)
self.r2.configure(background="black")
self.r2.pack(fill="both", expand="yes")
self.lin1 = tk.Label(self.r2, text="Temperatura: ", font=("Arial", 13), bg="black", fg="white")
self.lin1.grid(row=0, column=0)
self.lin2 = tk.Label(self.r2, text=self.temp1, font=("Arial", self.rozmiarWartosci), bg="black", fg="white")
self.lin2.grid(row=0, column=1)
self.lin3 = tk.Label(self.r2, text="°C", font=("Arial", 13), bg="black", fg="white")
self.lin3.grid(row=0, column=2)
self.lin4 = tk.Label(self.r2, text=" ", font=("Arial", 13), bg="black", fg="white")
self.lin4.grid(row=0, column=3)
self.lin5 = tk.Label(self.r2, text="Ciśnienie:", font=("Arial", 13), bg="black", fg="white")
self.lin5.grid(row=0, column=4)
self.lin6 = tk.Label(self.r2, text=self.cisn1, font=("Arial", self.rozmiarWartosci), bg="black", fg="white")
self.lin6.grid(row=0, column=5)
self.lin7 = tk.Label(self.r2, text="hPa", font=("Arial", 13), bg="black", fg="white")
self.lin7.grid(row=0, column=6)
self.lin8 = tk.Label(self.r2, text=" ", font=("Arial", 13), bg="black", fg="white")
self.lin8.grid(row=0, column=7)
self.lin9 = tk.Label(self.r2, text="Wilgotność:", font=("Arial", 13), bg="black", fg="white")
self.lin9.grid(row=0, column=8)
self.lin10 = tk.Label(self.r2, text=self.wilg1, font=("Arial", self.rozmiarWartosci), bg="black", fg="white")
self.lin10.grid(row=0, column=9)
self.lin11 = tk.Label(self.r2, text="%", font=("Arial", 13), bg="black", fg="white")
self.lin11.grid(row=0, column=10)
self.lin12 = tk.Label(self.r2, text=" ", font=("Arial", 13), bg="black", fg="white")
self.lin12.grid(row=0, column=11)
self.lin13 = tk.Label(self.r2, text=self.jakosc1, font=("Arial", self.rozmiarWartosci), bg="black", fg=self.kolor1)
self.lin13.grid(row=0, column=12)
self.window.mainloop()
def timer(self):
self.lb_clock.config(text = str(dt.datetime.now().time()).split(".")[0]) # poberanie czasu
self.window.after(1000, self.timer) # ustawienie kolejnego wywołania metody timer
def sypialnia_pokoj(self):
# baza mysql sypialni
mydb = mysql.connector.connect(host = "localhost", user = "******", password = "******", database = "dom")
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM sypialnia ORDER BY id DESC LIMIT 1")
wynik = mycursor.fetchall()
for row in wynik:
self.temp1=row[6]
self.cisn1=row[8]
self.wilg1=row[9]
self.jakosc1=row[7]
self.kolor1=row[10]
mycursor.close()
self.window.after(1000, self.sypialnia_pokoj)
apl = Application()
Program pokazuje aktualną godzinę, odczytuje ostatnie dane z bazy, ale już nie odświeża odczytu z bazy. Siedzę nad tym 2 dni i sam sobie nie poradzę. Co zrobić?