in meiner GUI ist in der class Counter ein loop implementiert der durch das klicken auf den STOP-button beendet wird.
In dem loop soll zum Text in der tkinter.text_box ein weiterer String hinzugefügt werden, aber genau da liegt das Problem.
Es wird nur der "start_string" in der text_box angezeigt, und der bleibt unverändert.
Kann mir jemand helfen?
Anbei mein Code, bei dem aber wie beschrieben, sich der Text nicht ändern:
Code: Alles auswählen
import tkinter as tk
class Counter():
'''Periodically print counter value to stdout'''
def __init__(self, parent, start=0, interval=1):
self.parent = parent
self.start_value = start
self.interval = interval
self.value = start
# auto start
self.running = True
self.doit()
def stop(self):
'''Stop counter'''
self.running = False
def doit(self):
'''Called periodically to incrementer counter and print value'''
if self.running:
self.value += 1
text_box = get_text_box()
text_box.insert('end', str(self.value))
if self.running:
self.parent.after(self.interval, self.doit)
root = tk.Tk()
root.title("Programm title")
root.geometry('700x300')
root.config(bg='#84BF04')
# Text Box
start_string = '#'*30 + '\n'
start_string += '-'*12 + ' START programm ' + '-'*12
text_box = tk.Text(root, height=12, width=80)
def get_text_box():
return text_box
counter = Counter(root)
# Function button_stop
def button_stop():
counter.stop()
# Button STOP
button_stop = tk.Button(root, text = "STOP", padx=250, pady=20, command=button_stop)
button_stop.grid(row=2,column=0)
button_stop.pack(side='bottom')
# settings text_box
text_box.pack(expand=True)
text_box.insert('end', start_string)
text_box.config(state='disabled')
root.mainloop()