You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tksheet组件打印选中单元格值失败问题求助

解决tksheet选中单元格值无法正确获取的问题

你的代码存在三个关键问题,导致无法正确获取选中单元格的值:

  • 选中单元格的变量初始化时机错误:selected_cells = sheet.get_selected_cells() 是在程序启动时执行的,此时还没有任何单元格被选中,后续点击时这个变量不会自动更新。必须在点击事件的回调函数内实时获取当前选中的单元格。
  • 注释掉了行列赋值代码:你把row, column = selected_cells[0]注释掉了,导致后续调用get_cell_data时没有定义row和column变量。
  • 使用<1>绑定可能和tksheet自身的选中逻辑冲突:tksheet有自己的选中事件处理,直接绑定鼠标左键点击可能会干扰组件的原生选中流程,建议使用tksheet提供的<<SheetSelected>>事件,或者确保在回调中先让组件完成选中操作。

修正后的代码如下:

import tkinter as tk
import sqlite3
import tksheet

top = tk.Tk()

sheet = tksheet.Sheet(top, width=943)
sheet.place(relx=0.0, rely=0.1)

conn = sqlite3.connect('dbz/data.db')
c = conn.cursor()
# 注意:table是SQL关键字,建议修改表名或用反引号包裹
c.execute('''SELECT * FROM `table`''')
rows = c.fetchall()

sheet.set_sheet_data(data=rows)

sheet.enable_bindings(("single_select",
                       "column_select",
                       "row_select",
                       "column_width_resize",
                       "row_height_resize",
                       "arrowkeys",
                       "right_click_popup_menu",
                       "rc_select",
                       "rc_insert_row",
                       "rc_delete_row",
                       "copy",
                       "cut",
                       "paste",
                       "delete",
                       "undo",
                       "edit_cell",
                       "drag_select"))

def pr(e):
    # 实时获取当前选中的单元格
    selected_cells = sheet.get_selected_cells()
    if selected_cells:
        row, column = selected_cells[0]
        value = sheet.get_cell_data(r=row, c=column, return_copy=True)
        print(value)
    else:
        print("No cell is selected")

# 使用tksheet原生选中事件替代鼠标左键绑定
sheet.bind("<<SheetSelected>>", pr)

top.mainloop()

额外说明

如果坚持使用鼠标左键绑定,可以在回调中添加短暂延迟(比如用top.after(10, lambda: ...)),保证tksheet完成选中状态更新后再获取数据,但更推荐使用组件原生的<<SheetSelected>>事件,这是tksheet专门用于监听选中状态变化的事件。

内容的提问来源于stack exchange,提问作者Andreja Milosavljevic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:10:12