我试图在 ttkbootstrap Tableview 中获取所选行的行数据,与 tkinter treeview 一样,我总是只使用 .bind("<>",my_func) ,而 my_func 将继续完成这项工作。
这是我使用的代码,当从表视图中选择一行时,没有迹象表明 on_tv_select 运行。在这种情况下,我不清楚如何获取所选行的数据。
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()
我确实看到了这篇文章如何使用Python和ttkbootstrap的tableview获取所选行的内容?显示了
bind_all
虽然绑定到所有小部件会给我的应用程序带来更多问题。
根据
Tableview
的源代码,它实际上是一个ttk.Frame
,里面有一个ttk.Treeview
,这个内部的Treeview
小部件可以通过属性view
来引用。
因此将事件绑定到此内部树视图:
myTableView.view.bind("<<TreeviewSelect>>", on_tv_select)