Seite 1 von 1
Buttontext ersetzen
Verfasst: Montag 19. September 2016, 21:00
von ixaM
Hallo, wie kann ich bei einem Button den Text ersetzen? Mein Versuch war, dass der Button "0" ist, und nach jedem Klicken 1 höher kommt. Sprich nach einem Klicken "1", nach 2 Klicken "2", sollte verständlich sein.
Code: Alles auswählen
import tkinter
def xplus1():
x = x + 1
global x
x = 0
global master
master = tkinter.Tk()
global field
field = tkinter.Canvas(master, width=1000, height=1000)
field.create_rectangle (0,0,1000,1000,fill = "black")
b = tkinter.Button (text = x, command = "xplus1")
b.pack()
field.pack(side = "left")
Re: Buttontext ersetzen
Verfasst: Montag 19. September 2016, 21:17
von BlackJack
@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()
Re: Buttontext ersetzen
Verfasst: Dienstag 20. September 2016, 17:41
von ixaM
Danke dir vielmals! Du bist echt eine große Hilfe!
