簡體   English   中英

點擊時顯示 Treeview 數據,點擊時隱藏 - Tkinter

[英]Display Treeview data on click and hide on click - Tkinter

我有這個小 Tkinter treeview 程序,其中數據以表格的形式顯示,那里還有一個按鈕。 所以我想知道的是能夠通過單擊相同的顯示按鈕來隱藏和顯示表格的數據。 就像我點擊一次它顯示時,當我再次點擊它時,它會隱藏它的數據。

對於數據,我的意思是它顯示的所有 ID 和名稱

from tkinter import ttk
import tkinter as tk
from tkinter import *

ID = [1,2,3,4,5, 6, 7, 8, 9]
Names = ['Tom', 'Rob', 'Tim', 'Jim', 'Kim', 'Kim', 'Kim', 'Kim']

window = tk.Tk()
window.state('zoomed')
treev = ttk.Treeview(window, selectmode ='browse')
treev.place(width= 250, height= 500, x=300, y=100)


verscrlbar = ttk.Scrollbar(window,
                           orient ="vertical",
                           command = treev.yview)

verscrlbar.pack(side ='right', fill ='y')
treev.configure(yscrollcommand = verscrlbar.set)


treev["columns"] = ('1', '2')

treev['show'] = 'headings'

treev.column("1", width = 90, anchor ='c')
treev.column("2", width = 90, anchor ='c')


treev.heading("1", text ="ID")
treev.heading("2", text ="Names")

for x, y in zip(ID, Names):
    treev.insert("", 'end', values =(x, y))

displaybutton = Button(window, text="Display", width=15, height=2, background= 'brown')
displaybutton.place(x=600, y=400)

window.mainloop()

其中一種方法是一一分離行。 為此,您需要將所有項目iid存儲在一個數組中。 treev.get_children()將返回所有項目 ID。 您以后可以使用detach()reattach() (或move() )刪除和顯示行

from tkinter import ttk
import tkinter as tk
from tkinter import *

def hide():
    
    global a
        
    if not treev.get_children():
       for  x, child in enumerate(a):
           treev.reattach(item=child, parent=treev.parent(a[0]), index=x) # or you could give parent as an empty string like parent=''

    else:
        for child in a:
            treev.detach(child)
 

window = tk.Tk()
window.state('zoomed')
treev = ttk.Treeview(window, selectmode ='browse')
treev.place(width= 250, height= 500, x=300, y=100)


verscrlbar = ttk.Scrollbar(window,
                           orient ="vertical",
                           command = treev.yview)

verscrlbar.pack(side ='right', fill ='y')
treev.configure(yscrollcommand = verscrlbar.set)

clicked = False
treev["columns"] = ('1', '2')

treev['show'] = 'headings'

ID = [1,2,3,4,5, 6, 7, 8, 9]
Names = ['Tom', 'Rob', 'Tim', 'Jim', 'Kim', 'Kim', 'Kim', 'Kim']

treev.column("1", width = 90, anchor ='c')
treev.column("2", width = 90, anchor ='c')


treev.heading("1", text ="ID")
treev.heading("2", text ="Names")

for x, y in zip(ID, Names):
    treev.insert("", 'end', values =(x, y))

a = treev.get_children()

displaybutton = Button(window, text="Display", width=15, height=2, background= 'brown', command=hide)
displaybutton.place(x=600, y=400)

window.mainloop()

我們通過在單擊時簡單地在 treeview 中插入值來創建它,對於下一次單擊,我們可以刪除我們在 treeview 中插入的所有內容。

a = 2
def showhide():
    global a
    if a%2 == 0:
        for x, y in zip(ID, Names):
            treev.insert("", 'end', values =(x, y))

        a= a+1
    else:
        c = treev.get_children()
        for child in c:
            treev.delete(child)
        a= a+1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM