Buttontext ersetzen

Fragen zu Tkinter.
Antworten
Benutzeravatar
ixaM
User
Beiträge: 13
Registriert: Samstag 9. Juli 2016, 15:32
Wohnort: Nähe München

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")
Zuletzt geändert von Anonymous am Montag 19. September 2016, 21:04, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
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()
Benutzeravatar
ixaM
User
Beiträge: 13
Registriert: Samstag 9. Juli 2016, 15:32
Wohnort: Nähe München

Danke dir vielmals! Du bist echt eine große Hilfe! :)
Antworten