Funktion aus Dict ansprechen
Verfasst: Montag 2. März 2020, 14:42
Hey
Ich versuche eine Funktion aus einem Dictionary anzusprechen.
Zwar funktioniert der Code, aber in PyCharm wird die Zeile
farblich hinterlegt: "Expession is not callable"
Wie macht man es richtig???
Ich versuche eine Funktion aus einem Dictionary anzusprechen.
Code: Alles auswählen
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def delete():
for widget_idx, widget in enumerate(root.winfo_children()):
if widget_idx != 0:
widget.destroy()
def handler(event):
delete()
current = combobox.current()
value = function_map['keys'][current]
selections(value)
def selections(value):
for combo in function_map['buttons'][value]:
btn = tk.Button(root, text=combo, font=('Arial', 8), width=len(combo)+2)
btn.pack(side=tk.LEFT, anchor=tk.W)
btn.bind('<Button-1>', btn_select)
def btn_select(event):
function_map['functions'][event.widget.cget('text')]()
def kurztext():
print('self.kurztext(self)')
def langtext():
print('self.langtext(self)')
function_map = {'keys': ['Datenparameter',
'Datenbeziehung'],
'buttons': {'Datenparameter': ['Kurztext', 'Langtext', 'Ordnungszahl',
'Menge', 'Einheit', 'Einheitspreis',
'Gesamtpreis', 'Intervall', 'Leistung'],
'Datenbeziehung': ['1. Stufe', '2. Stufe', '3. Stufe', '4. Stufe', '5. Stufe',
'Position', 'Unterposition', 'Zelle', 'Zeile', 'Spalte',
'Schrift', 'Hintergrund', 'Formel']
},
# Hier die Funktionen, die angesprochen werden sollen (erstmal nur zwei :))
'functions': {'Kurztext': kurztext, 'Langtext': langtext}
}
combobox = ttk.Combobox(root, values=function_map['keys'])
combobox.bind('<<ComboboxSelected>>', handler)
combobox.pack(side=tk.LEFT, anchor=tk.W)
combobox.set('Datenparameter')
selections(combobox.get())
root.mainloop()
Code: Alles auswählen
function_map['functions'][event.widget.cget('text')]()
Wie macht man es richtig???