2017-01-26 197 views
2

我的环境是使用Python 64位3.4的Windows 7。我正在尝试将滚动条附加到树视图窗口小部件。我已经尝试了几个版本,但一直无法让它工作。我到目前为止试过的东西:Python Treeview滚动条

# 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() 
+0

“无法正常工作”是什么意思?它有什么作用,和你期望的有什么不同? –

+0

你在哪里放置()你的滚动条?我没看到它。 – furas

回答

0

创建完小部件后,您需要在Tk窗口中放置或布置小部件。 tkinter中提供的布局管理器是网格,包装和放置。检查出来并将它们添加到您的小部件。

6

你必须place()你的滚动条在窗口中。

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() 

enter image description here

place()需要的xy手工计算。这是比较容易使用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() 

enter image description here

您可以随时把TreeviewScrollbarFrame,然后用place()pack()grid()在更好的地方移动该框架。

+0

这正是我所需要的..欣赏关于使用Frame的其他意见..很高兴知道这个Python初学者..谢谢 –

+0

顺便说一句:带有Frame的版本:http://pastebin.com/e9CSs3NX – furas

+0

Again ..正是我需要的..谢谢 –