Ich möchte den Namen des untergeordneten Elements aktualisieren, wenn Sie eine der folgenden Tasten drücken. Mit dieser Lambda-Funktion erhalte ich immer den Nachnamen, egal welche Taste gedrückt wird. Ist es möglich, es mit Lambda-Funktionen zu beheben? Soweit ich gesehen habe funktionieren Lambda-Funktionen gut mit definierten Werten, aber ich habe keine Beispiele mit Variablen gesehen. Wie kann ich es reparieren? Danke,tkinter Canvas aktualisieren, wenn auf die Schaltfläche geklickt wird
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#------------------------------------------------------------
__title__= 'Control'
__date__ = '10/07/2017'
__version__ = '0.0.1'
from tkinter import *
from tkinter import ttk
class Panel():
def __init__(self, database, name):
self.root = Tk()
self.root. title('Control V' + __version__)
self.root.configure(bg='beige')
self.window = ttk.Frame(self.root, borderwidth=2, relief="raised",
padding=(10,10))
self.window.grid(column=0, row=0)
self.window.option_add("*Font", "Helvetica 12")
# Row 0
self.header = ttk.Label(self.window, text=name, padding=(1,1),
anchor='center')
self.header.grid(row=0, column=0, columnspan=3)
# Row 1
for col, record in enumerate(database, 0):
name = database[col]['Letter']
label = ttk.Button(self.window, text=name,
command=lambda *args: self.get_name(col, database))
label.grid(row=1, column=(col), sticky='ew')
# All set
self.root.mainloop()
def get_name(self, row, database):
name = database[row]['Name']
self.header.configure(text=name)
def main():
database = [
{'Letter': 'A', 'Name': 'Zara'},
{'Letter': 'B', 'Name': 'Ezra'},
{'Letter': 'C', 'Name': 'Amy'},
]
name = database[0]['Name']
my_panel = Panel(database, name)
return 0
if __name__ == '__main__':
main()
Kadnarim, danke. Ich habe noch nie Curry-Funktionen benutzt. Es hat gut funktioniert, wie du mir gesagt hast. Ich musste nur selbst in Ihre get_name Definition hinzufügen. Danke! – ogeretal