Re: Tkinter Display clearen
Verfasst: Mittwoch 9. September 2015, 12:58
Ha! Vielen Dank für diese nützliche Info. Das man die Canvas Elemente im Nachhinein ändern kann wusste ich ja gar nicht. Bei PyGame musste man immer den gesamten Bildschirm löschen, daher bin ich bei Tkinter auch davon ausgegangen 
So sieht dann meine Update Funktion und mainWindow klasse aus
Läuft schon viel besser. Irgendwo ist jedoch wohl noch ein kleines Leck. Aber erst einmal muss ich mein gesamtes Programm aufräumen und Llassen einrichten 

So sieht dann meine Update Funktion und mainWindow klasse aus
Code: Alles auswählen
class mainWindow:
def __init__(self, parent):
pass
def __call__(self, parent):
self.gauge1 = digitalGauge(root, 0, 1, measuredItemsColor[0], measuredItemsValue[0], 500, measuredItems[0], 0.9)
self.gauge2 = digitalGauge(root, 5, 1, measuredItemsColor[1], measuredItemsValue[1], 500, "Breite", 0.9)
self.gauge3 = digitalGauge(root, 6, 1, measuredItemsColor[2], measuredItemsValue[2], 500, "Hoehe", 0.9)
self.gauge4 = digitalGauge(root, 7, 1, measuredItemsColor[1], 2000, 6000, measuredItems[1], 0.9)
def update(self):
self.gauge1.update(measuredItemsValue[0])
self.gauge2.update(measuredItemsValue[1])
self.gauge3.update(measuredItemsValue[2])
self.gauge4.update(measuredItemsValue[3])
class digitalGauge:
def __init__(self, window, row, column, color, value, maxVal, name, gaugeScale):
self.G = Canvas(window, bg="black", height=100, width=100)
if (row <= 4):
self.G.grid(column=column, row=row, sticky="WENS", rowspan=5)
else:
self.G.grid(column=column, row=row, sticky="WENS")
self.xval = 20
self.yval = 10
self.maxVal = maxVal
self.coord = self.xval + 5, self.yval + 5, (self.xval + 100) * gaugeScale, (self.yval + 100) * gaugeScale
self.gaugeValue = maxVal / float(value) # calculate the GaugeValue
self.hand = self.G.create_arc(self.xval, self.yval, (self.xval + 100 * gaugeScale),
(self.yval + 100 * gaugeScale), start=0,
extent=-(220 / self.gaugeValue), fill=color) # Draw hand
self.outline = self.G.create_arc(self.xval - 3, self.yval - 3, (self.xval + 100 * gaugeScale + 3),
(self.yval + 100 * gaugeScale + 3), start=0, extent=-220, style="arc",
outline="white", width=2) # draw outline
self.valueBox = self.G.create_rectangle((self.xval + 50 * gaugeScale), self.yval + 20 * gaugeScale,
self.xval + 100 * gaugeScale + 3, self.yval + 50 * gaugeScale,
outline='white',
width=2) # draw Value Box
self.value1 = self.G.create_text(self.xval + 54 * gaugeScale, self.yval + 22 * gaugeScale, anchor="nw",
text=value,
fill="white", font=(textFont, int(round(15 * gaugeScale))))
self.value2 = self.G.create_text(self.xval, self.yval - 8, anchor="nw", text=name, fill="white",
font=(textFont, int(round(19 * gaugeScale))))
def update(self, valueUpdated):
self.G.itemconfig(self.value1, text=valueUpdated)
self.gaugeValue = self.maxVal / float(valueUpdated)
self.G.itemconfig(self.hand, extent=-(220 / self.gaugeValue))
