У меня есть рамка Tkinter, которая по существу показывает группу миниатюр, отображаемых в виджетах Label. Мне нужно, чтобы ярлыки создавались динамически, чтобы приспособить разные числа миниатюр для генерации. У меня есть сгенерированный список имен файлов и можно создавать миниатюры по мере необходимости, но когда я пытаюсь связать функцию с каждой из созданных меток, она, кажется, переместилась на последнюю созданную Label/Binding. В результате только конечная метка имеет связанный с ней метод.Метод привязки к динамически созданным меткам
import tkinter as tk
class test(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args)
self.shell = tk.Frame(self)
self.shell.pack()
self.create_widgets()
def create_widgets(self):
'''
Two rows of labels
'''
for row in range(2):
for i in range(5):
text = 'Thumbnail\nrow{}\ncolumn{}'.format(row,i)
self.thumb = tk.Label(self.shell,
text = text)
self.thumb.grid(row = row, column = i, sticky = 'news')
self.thumb.bind("<Button-1>",lambda x: self.click(self.thumb))
def click(self, *args):
#This should affect only the Label that was clicked
print('CLICK!')
app = test()
root = app
root.mainloop()
Вызываемый метод всегда будет одним и тем же, но как определить ярлык, который будет выполняться?
Ваш пример не работает - вы связываете функцию 'self.test()', но у вас есть только 'self.click()'. А что такое 'self.card'? – furas
извините, плохое редактирование с оригинального кода с моей стороны, исправлено сейчас – Kelly