TKINTER: две кнопки с одинаковой функциональностью, но с разным ярлыком в списке - PullRequest
0 голосов
/ 18 марта 2019

Я борюсь с созданием виджетов в классах. Я хочу создать две кнопки, которые запускают один и тот же код, но я хочу, чтобы метка в списке была другой. Я не могу понять, как правильно использовать индекс, чтобы вторая метка не перезаписывала первую. Я пропустил очевидную ошибку?

Приложение класса (ttk.Frame):

def __init__(self, master):
    ttk.Frame.__init__(self, master)
    self.widgets()

def widgets(self):
    btn_list = [] #List to hold the button objects
    lbl_list = [] #List to hold the label objects

    for i in range(2):
        # Lambda command to hold reference to the index matched with range value
        self.b = ttk.Button(self, text = 'Button #%s' % i, command = lambda idx = i: self.browse_function(idx))
        self.b.grid(row = i, column = 0)

        self.pathlabel = ttk.Label(self, text="HI!")
        self.pathlabel.grid(row=i, column=1)

        self.btn_list.append(self.b) # Append the button to a list
        self.lbl_list.append(self.pathlabel) #Append the label to a list

def browse_function(self, idx):

    filename = filedialog.askopenfilename(title = "Select file", filetypes = (("csv files","*.csv"),("all files","*.*")))
    self.lbl_list[idx].cget("text").config(text=filename)

Спасибо за ваше время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...