OK deets
Wie würdest du mein Code-Snippet abändern, dass es ohne StringVar das genau gleiche macht. Die Bezeichnung Observable ist neu für mich. Verstehe ich nicht. Danke für deine Bemühung.
Gruß wuf
Automatische erstellung von mehreren Buttons?
Code: Alles auswählen
from functools import partial
import Tkinter as tk
def button_callback(button_text):
if button_text == 'c':
buttons[0]["text"] = 'Button-2'
button_names = ['a','b','c']
buttons = list()
root = tk.Tk()
for button_name in button_names:
button = tk.Button(root, text=button_name,
command=partial(button_callback, button_name))
button.pack(fill='x')
buttons.append(button)
buttons[0]['text'] = 'Button-1'
root.mainloop()
Der Punkt den ich machen wollte: fuer deinen illustrierten Zweck kommt man ohne extra Komplexitaet aus. Aber natuerlich sind observables sehr hilfreich: wenn man zb ein Datenmodell hat, das sich durch irgendwas anderes aendert, und dadurch dann *automatisch* die GUI upgedated wird.
@deets
Super! Besten Dank für deine hilfreiche Antwort mit Erklärung. Man hat eben nie ausgelernt. Dein modifizierte Code-Snippet verhält sich genau gleich wie mein aufgeblähtes Snippet.
Gruß Noch eine gute Nacht.
Super! Besten Dank für deine hilfreiche Antwort mit Erklärung. Man hat eben nie ausgelernt. Dein modifizierte Code-Snippet verhält sich genau gleich wie mein aufgeblähtes Snippet.
Gruß Noch eine gute Nacht.
Take it easy Mates!
@deets
Ich hab meinen Fehler gefunden. Ich hatte bei mir in der callback funktion blöderweise die laufvariable, und nicht die übergebene ausgegeben, daher hab ich natürlich immer nur den letzten Wert ausgegeben. Funktioniert jetzt. Danke!
Ich hab meinen Fehler gefunden. Ich hatte bei mir in der callback funktion blöderweise die laufvariable, und nicht die übergebene ausgegeben, daher hab ich natürlich immer nur den letzten Wert ausgegeben. Funktioniert jetzt. Danke!
Hi deets
Habe doch noch einen kleinen Unterschied zwischen meinem und dem modifizierten Snippet festgestellt. Bei meine Snippet ist auch der Name eines modifizierten Button verfügbar. Aber aufbauend auf dem modifizierten Snippet ist dies auch ohne den Einsatz von StringVar() realisierbar. Hier noch eine Anpassung des modifizierten Snippet um dieses Verhalten zu erzielen:
Gruß wuf
Habe doch noch einen kleinen Unterschied zwischen meinem und dem modifizierten Snippet festgestellt. Bei meine Snippet ist auch der Name eines modifizierten Button verfügbar. Aber aufbauend auf dem modifizierten Snippet ist dies auch ohne den Einsatz von StringVar() realisierbar. Hier noch eine Anpassung des modifizierten Snippet um dieses Verhalten zu erzielen:
Code: Alles auswählen
from functools import partial
import Tkinter as tk
def button_callback(button_obj):
if button_obj['text'] == 'c':
buttons[0]["text"] = 'Button-2'
print button_obj['text']
button_names = ['a','b','c']
buttons = list()
root = tk.Tk()
for button_name in button_names:
button = tk.Button(root, text=button_name)
button.pack(fill='x')
button.config(command=partial(button_callback, button))
buttons.append(button)
buttons[0]['text'] = 'Button-1'
root.mainloop()
Take it easy Mates!