鱼C论坛

 找回密码
 立即注册
查看: 2720|回复: 3

tkinter 中treeviw 如何刷新数据

[复制链接]
发表于 2020-12-29 17:13:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 rsj0315 于 2020-12-30 10:39 编辑

tkinter做了一个ui,
ui上有一个entry,一个button,和一个treeview
点击按钮treeview显示数据,
在entry输入内容,点击按钮,刷新treeview,显示筛选后的内容。

现在是treeview不能刷新。有谁知道怎么实现这个功能吗?
import pandas as pd
import tkinter.ttk as ttk
import tkinter as tk


def readcvs():
    df= pd.read_csv(r'C:\Users\renro001\Desktop\DEMO.txt',sep='\t')
    print(df)
    # ##标题栏
    name = tuple(df.columns.tolist())
    # print(name)
    ac = [str(i) for i in range(len(name))]
    # print(ac)
    # 返回数据
    data = tuple(map(tuple, df.values))
    # print(data)
    # 返回行数
    a = df.shape[0]
    # print(a)
    return name, data, a, ac
def readcvs_chaxun(x=''):
    df= pd.read_csv(r'C:\Users\renro001\Desktop\DEMO.txt',sep='\t')
    print(df)
    if x:
        df = df[df['A'].astype(str).str.contains(x)]
    # ##标题栏
    name = tuple(df.columns.tolist())
    # print(name)
    ac = [str(i) for i in range(len(name))]
    # print(ac)
    # 返回数据
    data = tuple(map(tuple, df.values))
    # print(data)
    # 返回行数
    a = df.shape[0]
    # print(a)
    return name, data, a, ac

win = tk.Tk()
win.title('xxx')
win.geometry("1200x600+400+20")

def all_show():
    name,data,a,ac = readcvs()
    tv = ttk.Treeview(win, columns=name, show='headings', height=150)
    ybar = tk.Scrollbar(win, orient=tk.VERTICAL,
                        command=tv.yview)
    xbar = tk.Scrollbar(win, orient=tk.HORIZONTAL,
                        command=tv.xview)
    tv.configure(yscroll=ybar.set)
    tv.configure(xscroll=xbar.set)
    ybar.pack(side=tk.RIGHT, fill=tk.Y)
    xbar.pack(side=tk.BOTTOM, fill=tk.X)
    tv.pack(fill='x', padx=10, pady=10)
    for i in range(len(name)):
        if i == 1:
            tv.column(ac[i], width=20, anchor='w')
        elif i == 3:
            tv.column(ac[i], width=20, anchor='w')

        else:
            tv.column(ac[i], width=100, anchor='c')
        tv.heading(ac[i], text=name[i])
    for i in range(a):
        tv.insert('', 'end', values=data[i])
cv1 = tk.StringVar()
x=cv1.get()
def chaxun_show():
    global x
    name,data,a,ac = readcvs_chaxun(x=cv1.get())
    tv = ttk.Treeview(win, columns=name, show='headings', height=150)
    ybar = tk.Scrollbar(win, orient=tk.VERTICAL,
                        command=tv.yview)
    xbar = tk.Scrollbar(win, orient=tk.HORIZONTAL,
                        command=tv.xview)
    tv.configure(yscroll=ybar.set)
    tv.configure(xscroll=xbar.set)
    ybar.pack(side=tk.RIGHT, fill=tk.Y)
    xbar.pack(side=tk.BOTTOM, fill=tk.X)
    tv.pack(fill='x', padx=10, pady=10)
    for i in range(len(name)):
        if i == 1:
            tv.column(ac[i], width=20, anchor='w')
        elif i == 3:
            tv.column(ac[i], width=20, anchor='w')

        else:
            tv.column(ac[i], width=100, anchor='c')
        tv.heading(ac[i], text=name[i])
    for i in range(a):
        tv.insert('', 'end', values=data[i])

b2 = tk.Button(win, text='显示所有', width=10, font=("等线", 16), bg='grey', bd=5, fg='white',
                   command=lambda :all_show()).pack(fill='x', padx=10, pady=10)
label3 = tk.Label(win, text='按A列数据筛选:', font=("等线", 16)).pack(fill='x', padx=10, pady=10)
entry1 = tk.Entry(win, font=("等线", 16),textvariable=cv1).pack(fill='x', padx=10, pady=10)
b3 = tk.Button(win, text='查询', width=10, font=("等线", 16), bg='grey', bd=5, fg='white',
                   command=lambda :chaxun_show()).pack(fill='x', padx=10, pady=10)
win.mainloop()

DEMO.txt

53 Bytes, 下载次数: 3

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-30 10:41:42 | 显示全部楼层
@Twilight6 @zltzlt 写的可能有点繁琐了。
主要是想,点击一个按钮显示dataframe,在entry输入数值,点击查询,treeview显示查询后的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-30 12:38:06 | 显示全部楼层
@hrp 帮忙看看这个能弄么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-30 12:56:26 From FishC Mobile | 显示全部楼层
rsj0315 发表于 2020-12-30 12:38
@hrp 帮忙看看这个能弄么?

我不会tk
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表