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

图书馆管理系统如何获取Treeview选中行并添加到另一窗口Treeview

图书馆管理系统借阅结算功能实现

实现从主界面Treeview图书列表中选中指定条目,点击「ADD TO CART」按钮后,将选中行数据同步到结算页Treeview的功能。

主界面Treeview效果:
Treeview GUI
结算页效果:
checkout page

原有代码问题修复

首先修正原有代码中滚动条绑定的错误:原有代码command=tree.yview()多写了括号,会导致程序启动时直接触发滚动条回调,绑定失效,需要去掉括号改为command=tree.yview。

核心实现步骤

  • 调整Treeview变量作用域,确保按钮回调函数可以访问到主界面和结算页的Treeview实例
  • 实现add_to_cart_f回调函数,获取选中行数据
  • 将选中行数据插入到结算页Treeview中

完整修改参考代码

from tkinter import Tk, Button, Toplevel, ttk
import pandas as pd

# 提前定义全局变量存储Treeview实例
main_tree = None
checkout_tree = None
# 颜色常量定义
WHITE = "#FFFFFF"
NAVY_BLUE = "#000080"

def reserve():
    # 原有reserve逻辑保持不变
    pass

def search():
    # 原有search逻辑保持不变
    pass

def checkout_page():
    global checkout_tree
    # 创建结算页顶层窗口
    checkout_win = Toplevel()
    checkout_win.title("借阅结算")
    # 初始化结算页Treeview,列配置和主界面保持一致
    checkout_tree = ttk.Treeview(checkout_win)
    books_columns = list(pd.read_csv("List of Books - Sheet1 (3).csv").columns)
    checkout_tree["column"] = books_columns
    checkout_tree["show"] = "headings"
    for col in books_columns:
        checkout_tree.heading(col, text=col)
    checkout_tree.pack(fill="both", expand=True, padx=10, pady=10)

def add_to_cart_f():
    # 获取所有选中的行id
    selected = main_tree.selection()
    if not selected:
        # 未选中任何行直接返回
        return
    for item in selected:
        # 获取选中行的所有值
        row_values = main_tree.item(item, "values")
        # 插入到结算页Treeview
        checkout_tree.insert("", "end", values=row_values)

# 主界面初始化
root = Tk()
root.title("图书馆管理系统")

# 原有按钮逻辑保持不变
reserve_button = Button(root, text="RESERVE" ,fg=WHITE, bg=NAVY_BLUE, width=20, command=reserve)
reserve_button.grid(column=5,row=5)
checkout_button = Button(root, text="CHECKOUT", fg=WHITE,bg="#6DA5A9",width=20,command=checkout_page)
checkout_button.grid(column=0,row=5,sticky="w")
search_button = Button(root, text="SEARCH", fg=WHITE,bg="pink", width=20, command=search)
search_button.grid(column=3,row=3)
add_to_cart = Button(root, text="ADD TO CART", fg=WHITE,bg="#7E370C", width=20,command=add_to_cart_f)
add_to_cart.grid(column=7, row=5,sticky="e")

# 主界面Treeview创建
main_tree = ttk.Treeview(root)
books_data = pd.read_csv("List of Books - Sheet1 (3).csv")
df_column = list(books_data.columns)
main_tree["column"] = df_column
main_tree["show"] = "headings"
# 修正滚动条绑定
vsb = ttk.Scrollbar(root, orient="vertical", command=main_tree.yview)
vsb.grid(column=8, row=4, sticky="ns")
main_tree.configure(yscrollcommand=vsb.set)

for column in df_column:
    main_tree.heading(column,text=column)

df_rows = books_data.to_numpy().tolist()
for row in df_rows:
    main_tree.insert("","end",values=row)
main_tree.grid(column=0,row=4,columnspan=8)

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:36:01