0

I have a program I'm trying to create using tkinter, however I am struggling to figure out why I can't print out the name of the column when a user selects it. It only shows "Header 5 is selected!". Is there a way I can print the name of the column or column number when a user selects it?

enter image description here

def open_preview(import_file_path):
#Column headers and values captured from CSV file
column_names = []
column_names = parse_CSV_headers(import_file_path)
tuple_column_names = []
tuple_column_names = tuple(column_names)
column_values = []
column_values = preview_CSV_values(import_file_path)

#Define columns in preview window
my_tree['columns'] = tuple_column_names

for row in my_tree.get_children():
    my_tree.delete(row)

for i in range(len(tuple_column_names)):
    my_tree.column(tuple_column_names[i], anchor=W, width=150, minwidth=100)

for j in range(len(tuple_column_names)):
    my_tree.heading(tuple_column_names[j], text=tuple_column_names[j], anchor=W, command=lambda: print(tuple_column_names[j] + " is selected!"))

#Adding data to preview window
insert_counter = 0
for k in range(len(column_values)):
    my_tree.insert(parent='', index='end',iid=k, text="", values=(column_values[k]))
    insert_counter += 1
Andy Garcia
  • 79
  • 1
  • 10
  • @acw1668 Kind of, I'm just a little confused on integrating this with my code. I've tried the following: command=lambda tuple_column_names=tuple_column_names[j] : print(tuple_column_names[j]) command=lambda name=tuple_column_names[j] : print(tuple_column_names[j]) But still no luck. – Andy Garcia Jun 07 '21 at 16:48
  • 1
    Change `lambda: print(...)` to `lambda j=j: print(...)`. – acw1668 Jun 07 '21 at 16:50
  • @acw1668 You sir, are amazing. Thank you so much! – Andy Garcia Jun 07 '21 at 16:55

0 Answers0