
Ich habe eine wichtige Frage an euch und ich hoffe ihr könnt mir die beantworten. Ihr würdet mir den allerärtesten retten.
Vorab ich bin kein Programmierer und ich hätte am Anfang als ich das Projekt vom Professor angenommen habe auch nicht mit soviel Stress gerechnet,
aber das ist ein anderes Thema

Also ich habe ein Frame/Window (PageTwo) erstellt, welches für mein Studienprojekt Variablen(aus einem CAN-Telegramm gelesen) in einer Matrix/Tabelle anzeigen soll
Hier ist einmal der Code für PageTwo/ das Hauptframe
Code: Alles auswählen
class PageTwo(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Zelltemperatur", font=TITLE_FONT)
label.pack(side="top", fill="x", pady=10)
abschnitt=tk.Frame(self)
abschnitt.pack()
t1=TkTabelle(abschnitt,6,4)
button= tk.Button(self, text="Startoberflaeche",
command=lambda: controller.show_frame(StartPage))
button.pack()
Hier ist der Code für die Tabelle
Im Prinzip sind das einfach Labels die mit .grid so angereiht werden dass es eine Tabelle ergibt.
Code: Alles auswählen
class TkTabelle:
def __init__(self, frame, zeilen, spalten):
self.frame=frame
self.zeilen=zeilen
self.spalten=spalten
self.tabelle=[]
for z in range(zeilen):
self.tabelle.append([])
for s in range(spalten):
label=tk.Label(self.frame,width=2,height=2,bg="white",relief="solid")
label.grid(row=z, column=s)
self.tabelle[-1].append(label)
def einfuegen(self,zeile,spalte,zahl):
self.tabelle[zeile][spalte].config(text=zahl)
Ich habe also jetzt eine 6x4 Matrix in PageTwo erstellt welches mir auch perfekt angezeigt wird. Nur natürlich erstmal leer.
Der Nächste Schritt wäre folglich Daten in die Tabelle zu schreiben.
Aber genau hier ist mein Problem.
Wie kann ich Daten in die Tabelle schreiben?
Bzw. wie kann ich außerhalb von der __init__ von PageTwo also in einem Thread z.B. Daten einfügen?
Ich habe angenommen, dass folgendes Ausreicht um auf t1 in PageTwo zuzugreifen aber dem ist nicht so...
Code: Alles auswählen
Temperatur=[20,40,50,60,70,80]
class Daten(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while 42:
PageTwo.t1.einfuegen(0,1,Temperatur[0]) #soll an Zeile 0 Spalte 1 den Wert von Temperatur[0] eintragen
time.sleep(2)
print "Ich bin im Thread"
Um also alles nochmal ein wenig kürzer zusammen zu fassen:
Wie kriege ich es hin auf t1 in class PageTwo zuzugreifen damit ich dann die Funktion einfuegen benutzen kann,
um Daten einzulesen und das Periodisch, da ich immer wieder Daten vom CAN-Bus einlese und diese dann darstellen möchte.
Wenn mir einer das sagen kann, dann würde ich hier vor Freude ausrasten!!
Bin seit einer Woche damit beschäftigt und keine Lösung gefunden ...
Wenn ihr mein Problem nicht ganz verstanden habt, dann einfach nachfragen ...

Mit besten Grüßen
xTras