2017-01-26 8 views
2

私の環境はWindows 7で、Python 64ビット3.4を使用しています。私は、ツリービューのウィジェットにスクロールバーを添付しようとしています。私はいくつかのバージョンを試しましたが、動作させることができませんでした。これまでに試したこと:Pythonツリービュースクロールバー

# 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の手計算を必要とします。あなたが常にFrameTreeviewScrollbarを配置し、より良い場所にplace()pack()またはgrid()でこのフレームを移動することができます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

を使用する方が簡単です。

+0

これはまさに私が必要としていたものです。Frameを使った追加のコメントをありがとうございます。このPythonの初心者のために知っておいて嬉しいです。ありがとうございます。 –

+0

BTW:バージョン 'Frame':http://pastebin.com/e9CSs3NX – furas

+0

もう一度..ちょうど私が必要なもの..ありがとう –