tkinter - widget - Bezeichnungen aus dem Element ziehen
Verfasst: Montag 14. Juli 2014, 16:54
Hallo,
ich habe mir ein kleines Programm ausgedacht, mit dem ich in einer Funktion Checkboxen erstelle. Die Funktion liefert ein mehrdimensionales Array zurück, bei dem jede Zeile aus den Werten "widgethandler, variablehandler und bezeichner" besteht. Diese drei Informationen brauchte ich in meinem nachfolgenden Programm, um verschiedene Aktionen damit durchzuführen.
Ich finde es irgendwie "unpraktisch", ein mehrdimensionales Array zurückzugeben, um z.B. an den Variablenbezeichner heranzukommen. Der einzelne Button wird durch "widgethandler" angesprochen. Besteht die Möglichkeit, dass ich nur mit diesem einen Bezeichner auf die anderen Elemente wieder zurückgreifen kann, die ich vorher beim Erstellen
zugewiesen habe - also dass ich nicht Checkbutton-Variable als zweites Element aus dem Array auslesen muss, sondern irgendwie mit widget.XXX.get()/set() die Information kriege?
ich habe mir ein kleines Programm ausgedacht, mit dem ich in einer Funktion Checkboxen erstelle. Die Funktion liefert ein mehrdimensionales Array zurück, bei dem jede Zeile aus den Werten "widgethandler, variablehandler und bezeichner" besteht. Diese drei Informationen brauchte ich in meinem nachfolgenden Programm, um verschiedene Aktionen damit durchzuführen.
Code: Alles auswählen
import tkinter
from functools import partial
def create_buttons (window_handler, entries=[], **options):
return_value=[]
for entry in entries:
print (entry)
widget_var=tkinter.BooleanVar()
widget=tkinter.Checkbutton (window_handler,
variable=widget_var,
text=entry,
**options)
return_array=[widget, widget_var, entry]
return_value.append (return_array)
return return_value
def set_all (handlerlist, state):
for handler in handlerlist:
handler[1].set (state)
def main():
root = tkinter.Tk()
# root.
entry_buttons = ["Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"]
button_array = create_buttons(root,
entry_buttons
)
abort_button = tkinter.Button (root, text="Beenden", command=root.quit )
abort_button.pack()
all_button = tkinter.Button (root, text="Alle", command=partial(set_all, button_array, True))
all_button.pack()
no_button = tkinter.Button (root, text="Keine", command=partial(set_all, button_array, False))
no_button.pack()
for element in button_array:
print ("Elementbezeichner: %s " % str(element[2]) )
element[0].pack()
root.mainloop()
if __name__ == '__main__':
main()Code: Alles auswählen
widget=tkinter.Checkbutton (window_handler,
variable=widget_var,
text=entry,
**options)