@Miscelo: für den in-Operator braucht man keine Liste, der funktioniert auch mit Strings. In vielen Punkten verhalten sich Strings wie Listen (z.B. for-Schleife).
Um einen String in eine Liste zu verwandeln, braucht man auch keine for-Schleife, sondern kann direkt list(nstring) schreiben. `nstring` und `liste` werden nur im else-Block genutzt, brauchen also erst dort berechnet werden. `i` ist ein schlechter Name für ein Zeichen, bei i erwartet man einen Index, also eine Zahl.
@Antonw: alles was eine Funktion braucht, sollte sie über ihre Argumente bekommen, also Zähler und Zählerstand, Ergebnisse werden per return zurückgeliefert. Jetzt hast Du aber das Problem, dass sich Zählerstand verändert und GUI-Rückruffunktionen nicht mit Rückgabewerten umgehen können. Daher brauchst Du für jedes nicht triviale GUI-Programm zwingend Klassendefinitionen.
Code: Alles auswählen
import tkinter as tk
class MainWindow(tk.Tk):
def __init__(self):
super().__init__()
self.zaehler_stand = 0
self.zaehler = tk.Label(self, text=self.zaehler_stand)
self.zaehler.pack()
tk.Button(text='Zählen', command=self.plus_eins).pack()
def plus_eins(self):
self.zaehler_stand += 1
if self.zaehler_stand % 3 == 0 or '3' in str(self.zaehler_stand):
self.zaehler['text'] = "BOOM"
else:
self.zaehler['text'] = self.zaehler_stand
def main():
main_window = MainWindow()
main_window.mainloop()
if __name__ == '__main__':
main()