@ixaM: Vergiss am besten ganz schnell das es ``global`` gibt. So wie Du das verwendest hat es auch gar keine Wirkung. Für GUI-Programme sollte man sich zuerst mit objektorientierter Programmierung befassen, denn man kommt da nicht wirklich ohne aus wenn man saubere, nachvollziehbare Programme mit GUI schreiben möchte. Bei ganz trivialen Programmen geht es noch, aber selbst da muss man sich mindestens mit funktionialer Programmierung und Closures auseinandersetzen.
Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm gehört in eine Funktion. Die heisst üblicherweise `main()`. Funktionen und Methoden sollten keine Werte (ausser Konstanten) verwenden, die nicht als Argumente übergeben wurden. Und wenn eine Funktion ein Ergebnis hat, dann verlösst dieses die Funktion als Rückgabewert. Methoden können einen Rückgabewert haben, oder den Zustand des Objekts verändern auf dem sie aufgerufen wurden.
Code: Alles auswählen
import tkinter as tk
from functools import partial
from itertools import count
def display_next_number(button, counter):
button['text'] = next(counter)
def main():
root = tk.Tk()
counter = count()
button = tk.Button(root, text=next(counter))
button['command'] = partial(display_next_number, button, counter)
button.pack(side=tk.LEFT)
tk.Canvas(
root, width=1000, height=1000, background='black'
).pack(side=tk.LEFT)
root.mainloop()
if __name__ == '__main__':
main()