python treeview 滚动条隐藏_Python Treeview滚动条

My environment is Windows 7 using Python 64-bit 3.4. I am trying to attach a scrollbar to a treeview widget. I have tried several versions but have been unable to get it to work. What I have tried so far:

# treeview example

from tkinter import ttk

from tkinter import *

# Create instance

win = Tk()

# Add a title

win.title("Treeview Test")

# Add a treeview

tree = ttk.Treeview(win,selectmode='browse')

vsb = ttk.Scrollbar(orient="vertical",command=tree.yview)

tree.configure(yscrollcommand=vsb.set)

tree.place(x = 30, y = 95)

tree["columns"] = ("1", "2")

tree['show'] = 'headings'

tree.column("1", width=100, anchor='c')

tree.column("2", width=100, anchor='c')

tree.heading("1", text="Account")

tree.heading("2", text="Type")

tree.insert("",'end',text="L1",values=("Big1","Best"))

tree.insert("",'end',text="L2",values=("Big2","Best"))

tree.insert("",'end',text="L3",values=("Big3","Best"))

tree.insert("",'end',text="L4",values=("Big4","Best"))

tree.insert("",'end',text="L5",values=("Big5","Best"))

tree.insert("",'end',text="L6",values=("Big6","Best"))

tree.insert("",'end',text="L7",values=("Big7","Best"))

tree.insert("",'end',text="L8",values=("Big8","Best"))

tree.insert("",'end',text="L9",values=("Big9","Best"))

tree.insert("",'end',text="L10",values=("Big10","Best"))

tree.insert("",'end',text="L11",values=("Big11","Best"))

tree.insert("",'end',text="L12",values=("Big12","Best"))

# Set Window Form Size and disable resizing

win.minsize(width=1200,height=600)

win.resizable(width=0,height=0)

# Event Loop

win.mainloop()

quit()

解决方案

You have to place() your scrollbar in window.

from tkinter import ttk

import tkinter as tk

win = tk.Tk()

win.minsize(width=300, height=400)

win.resizable(width=0, height=0)

tree = ttk.Treeview(win, selectmode='browse')

tree.place(x=30, y=95)

vsb = ttk.Scrollbar(win, orient="vertical", command=tree.yview)

vsb.place(x=30+200+2, y=95, height=200+20)

tree.configure(yscrollcommand=vsb.set)

tree["columns"] = ("1", "2")

tree['show'] = 'headings'

tree.column("1", width=100, anchor='c')

tree.column("2", width=100, anchor='c')

tree.heading("1", text="Account")

tree.heading("2", text="Type")

tree.insert("",'end',text="L1",values=("Big1","Best"))

tree.insert("",'end',text="L2",values=("Big2","Best"))

tree.insert("",'end',text="L3",values=("Big3","Best"))

tree.insert("",'end',text="L4",values=("Big4","Best"))

tree.insert("",'end',text="L5",values=("Big5","Best"))

tree.insert("",'end',text="L6",values=("Big6","Best"))

tree.insert("",'end',text="L7",values=("Big7","Best"))

tree.insert("",'end',text="L8",values=("Big8","Best"))

tree.insert("",'end',text="L9",values=("Big9","Best"))

tree.insert("",'end',text="L10",values=("Big10","Best"))

tree.insert("",'end',text="L11",values=("Big11","Best"))

tree.insert("",'end',text="L12",values=("Big12","Best"))

win.mainloop()

But place() needs manual calculations of x and y. It is easier to use pack()

from tkinter import ttk

import tkinter as tk

win = tk.Tk()

win.resizable(width=0, height=0)

tree = ttk.Treeview(win, selectmode='browse')

tree.pack(side='left')

vsb = ttk.Scrollbar(win, orient="vertical", command=tree.yview)

vsb.pack(side='right', fill='y')

tree.configure(yscrollcommand=vsb.set)

tree["columns"] = ("1", "2")

tree['show'] = 'headings'

tree.column("1", width=100, anchor='c')

tree.column("2", width=100, anchor='c')

tree.heading("1", text="Account")

tree.heading("2", text="Type")

tree.insert("",'end',text="L1",values=("Big1","Best"))

tree.insert("",'end',text="L2",values=("Big2","Best"))

tree.insert("",'end',text="L3",values=("Big3","Best"))

tree.insert("",'end',text="L4",values=("Big4","Best"))

tree.insert("",'end',text="L5",values=("Big5","Best"))

tree.insert("",'end',text="L6",values=("Big6","Best"))

tree.insert("",'end',text="L7",values=("Big7","Best"))

tree.insert("",'end',text="L8",values=("Big8","Best"))

tree.insert("",'end',text="L9",values=("Big9","Best"))

tree.insert("",'end',text="L10",values=("Big10","Best"))

tree.insert("",'end',text="L11",values=("Big11","Best"))

tree.insert("",'end',text="L12",values=("Big12","Best"))

win.mainloop()

You can always put Treeview and Scrollbar in Frame and then move this frame with place(), pack() or grid() in better place.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值