|
发表于 2024-3-20 20:23:30
|
显示全部楼层
非常抱歉,我之前的回答还是有误。确实,对于Treeview控件来说,默认会显示DataFrame中的所有列,包括空白列。如果您想要在展示的时候只显示部分列,可以在数据展示之前,先选择需要显示的列。以下是修正后的代码示例:
import tkinter as tk
from tkinter import ttk
import pandas as pd
def filter_dataframe():
keyword = entry.get()
filtered_df = df[df['绰号'].str.contains(keyword)]
display_dataframe(filtered_df)
def display_dataframe(df):
treeview.delete(*treeview.get_children())
for index, row in df.iterrows():
values = row[['姓名', '绰号', '年龄', '性别']].tolist()
treeview.insert('', 'end', values=values)
# 创建Tkinter窗口
window = tk.Tk()
# 创建一个Treeview控件
treeview = ttk.Treeview(window)
# 添加表头
columns = ['姓名', '绰号', '年龄', '性别']
for column in columns:
treeview.heading(column, text=column)
treeview.column(column, width=100) # 设置列宽度
# 从Excel读取数据到DataFrame
df = pd.read_excel('data.xlsx')
# 在Treeview中显示DataFrame的部分数据
display_dataframe(df)
# 创建一个Entry控件用于输入筛选关键字
entry = tk.Entry(window)
entry.pack()
button = tk.Button(window, text='查询', command=filter_dataframe)
button.pack()
# 显示TreeView
treeview.pack()
window.mainloop()
这次的代码示例只显示了姓名、绰号、年龄和性别这四列数据。对于筛选功能,我使用了df['绰号'].str.contains(keyword)来实现,即找到绰号列中包含关键字的行,并将其显示在Treeview中。希望这次的回答能够满足您的需求!如果您还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|