ich bin neu im Forum und blutiger Programmiereinsteiger. Derzeit versuche ich mir eine Klasse zu erstellen welche es mir ermoeglicht
ein anderes Programm durch ein kleines Kontrollwidget zu erweitern. Derzeit scheitere ich daran das ich ueber eine Pingabfrage, welche in endlosschleife in einem gesonderten
Threat laeuft, im Mainthread die Farbe eines Labels zu wechseln. Quasi als eine art Statusabfrage. Leider will mir das ueberschreiben der Methode "__wgd_label_client_status" nicht gelingen. Vielleicht kann mir ja wer einen Tipp geben. Leider waren andere Forenbeitraege nicht sehr hilfreich fuer mich da ich mangels Erfahrung noch nicht so gut adaptieren kann.
Ich bedanke mich schon mal im vorraus.
Gruesse!
P.S.: Amerikanische Tastatur, daher das Umlaut geschreibe.
Code: Alles auswählen
from time import sleep
import tkinter as tk
import os
import time
import threading
iplist = ["192.168.100.1", "192.168.100.2"]
class widget_ui(threading.Thread):
def __init__(self,space,xcoord,ycoord,ip):
#super().__init__(ip)
self.space = space
self.xcoord = xcoord
self.ycoord = ycoord
self.ip = ip
self.bgclient = self.run()
def wgd_rahmen(self):
self.wgd_rahmen = tk.Frame(self.space, width=130, height=390, highlightthickness=1, highlightbackground="white", bg="#313335").place(x=self.xcoord, y=self.ycoord)
self.colorvar = ""
self.__clientname()
self.__wgd_label_client_beschriftung()
self.__wgd_label_client_status()
self.__wgd_label_content_beschriftung()
self.__wgd_label_content_status()
self.__wgd_button()
def __clientname(self):
self.__clientname = tk.Label(self.space, text ="Clientname", bg="#313335", fg="white", font=("Segoe ui",13)).place(x=self.xcoord+8, y=self.ycoord+15)
def __wgd_button(self):
self.__wgd_button = tk.Button(self.space, width=11, fg="white", height=5, text="Reboot", bg="#444441").place(x=self.xcoord+7, y=self.ycoord+285)
def __wgd_label_client_beschriftung(self):
self.__wgd_label_client_beschriftung = tk.Label(self.space, text ="Clientstatus", bg="#313335", fg="white", font=("Segoe ui",11)).place(x=self.xcoord+19, y=self.ycoord+125)
def run(self):
while True:
if os.system("ping -c 1 " + self.ip) == 0:
return True
else:
return False
time.sleep(10)
def __wgd_label_client_status(self):
self.__wgd_label_client_status = tk.Label(gui, width=14, height=2, command = threading.Thread(target=self.run).start())
self.__wgd_label_client_status.place(x=self.xcoord+7, y=self.ycoord+80)
self.__wgd_label_client_status
if self.bg_client == True:
self.__wgd_label_client_status.config(bg="green")
else:
self.__wgd_label_client_status.config(bg="red")
def __wgd_label_content_beschriftung(self):
self.__wgd_label_content_beschriftung = tk.Label(self.space, text ="Contentstatus", bg="#313335", fg="white", font=("Segoe ui",11)).place(x=self.xcoord+10, y=self.ycoord+205)
def __wgd_label_content_status(self):
self.__wgd_label_content = tk.Label(gui, width=14, height=2,bg="red").place(x=self.xcoord+7, y=self.ycoord+160)
gui = tk.Tk()
gui.geometry("1600x900")
frame = tk.Frame(width = 1400, height = 800, bg="#2b2b2b").place(x = 50, y = 50 )
r = widget_ui(gui,55,55,iplist[0])
r.wgd_rahmen()
gui.mainloop()