Estou tentando obter os dados da linha selecionada em um Tableview ttkbootstrap e, como acontece com o tkinter treeview, sempre usei .bind("<>",my_func) e my_func continuaria fazendo o trabalho.
Aqui está o código que usei e não há indicação de que on_tv_select foi executado ao selecionar uma linha no Tableview. Nesse caso, não sei como obter os dados da linha selecionada.
import tkinter as tk
import ttkbootstrap as ttk
from ttkbootstrap.tableview import Tableview
def on_tv_select(event):
print(f".. I was selected")
if __name__ == '__main__':
colData = [{'text': 'carID', 'stretch': True},
{'text': 'Make', 'stretch': True},
{'text': 'Model', 'stretch': True}]
rowData = [(1,'Make ZZ', 'Model BA'),
(2,'Make DD', 'Model Ed'),
(3,'Z Dude','That other')]
mainWindow = tk.Tk()
mainWindow.title("POC-Main Window")
myTableView = Tableview(master=mainWindow,coldata=colData,rowdata=rowData,paginated=True,searchable=True,bootstyle='primary')
myTableView.pack(fill='both', expand=True, padx=10, pady=10)
myTableView.bind("<<TreeviewSelect>>",on_tv_select)
mainWindow.mainloop()
Eu vim sobre este post Como obtenho o conteúdo da linha selecionada usando Python e o tableview do ttkbootstrap? que mostrou bind_all
que a ligação a todos os widgets apresenta mais problemas com meu aplicativo.
De acordo com o código-fonte de
Tableview
, na verdade é umttk.Frame
widgetttk.Treeview
interno e esseTreeview
widget interno pode ser referenciado por atributoview
.Portanto, vincule o evento a esta visualização em árvore interna: