Python 如何使用Tkinter将垂直滚动条附加到treeview?

Python 如何使用Tkinter将垂直滚动条附加到treeview?,python,tkinter,treeview,Python,Tkinter,Treeview,我一直在尝试为tkinter treeview附加一个水平和垂直滚动条。在我的主应用程序中,所有数据都来自一个sql数据库,因此我需要能够在一个速度窗口内滚动浏览大量数据。我已经成功地将treeview放在了子窗口中,但是我仍然被困在如何附加工作的滚动条上 尽管目前有一个垂直滚动条,但它似乎没有连接到treeview,也没有滚动我输入的任何数据 有没有办法在我的应用程序中放置垂直和水平滚动条 import Tkinter as tk import os import sys import re

我一直在尝试为tkinter treeview附加一个水平和垂直滚动条。在我的主应用程序中,所有数据都来自一个sql数据库,因此我需要能够在一个速度窗口内滚动浏览大量数据。我已经成功地将treeview放在了子窗口中,但是我仍然被困在如何附加工作的滚动条上

尽管目前有一个垂直滚动条,但它似乎没有连接到treeview,也没有滚动我输入的任何数据

有没有办法在我的应用程序中放置垂直和水平滚动条

import Tkinter as tk
import os
import sys
import re
import ttk
from Tkinter import *
import tkFont


class application(tk.Tk):

    def __init__(self, *args, **kwargs):
            tk.Tk.__init__(self, *args, **kwargs)
            container = tk.Frame(self)
            container.pack(side="top", fill="both", expand = True)
            container.grid_rowconfigure(0, weight=1)
            container.grid_columnconfigure(0, weight=1)
            self.frames = {}        

            for F in (app_one, app_two):
                frame = F(container, self)
                self.frames[F] = frame
                frame.grid(row=0, column=0, sticky="nsew")
            self.show_frame(app_one)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()


class app_one(tk.Frame):

    def __init__(self, parent, controller):
            tk.Frame.__init__(self,parent)
            button = ttk.Button(self, text="Page One", command=lambda: controller.show_frame(app_two))
            button.pack()


class app_two(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller=controller
        self.msgText = tk.StringVar()
        button = ttk.Button(self, text="Open", command= self.Child_Window)
        button.pack()

    def Child_Window(self):
        win2 = Toplevel()
        new_element_header=['1st','2nd','3rd','4th']
        treeScroll = ttk.Scrollbar(win2)
        treeScroll.pack(side=RIGHT, fill=Y)
        tree = ttk.Treeview(win2,columns=new_element_header, show="headings", yscrollcommand = treeScroll)
        tree.heading("1st", text="1st")
        tree.heading("2nd", text="2nd")
        tree.heading("3rd", text="3rd")
        tree.heading("4th", text="4th")
        tree.insert("" , 0,    text="Line 1", values=("1A","1b"))
        tree.insert("" , 0,    text="Line 2", values=("1A","1b"))
        tree.insert("" , 0,    text="Line 3", values=("1A","1b"))
        tree.insert("" , 0,    text="Line 4", values=("1A","1b"))
        tree.insert("" , 0,    text="Line 5", values=("1A","1b"))
        tree.insert("" , 0,    text="Line 6", values=("1A","1b"))
        tree.insert("" , 0,    text="Line 7", values=("1A","1b"))

        tree.pack(side=LEFT, fill=BOTH)
        treeScroll.config(command=tree.yview)


app = application()
app.wm_geometry("420x200")
app.wm_title("Test")
app.mainloop()

您可以将滚动条连接到
Treeview
小部件,与连接任何其他可滚动小部件的操作相同

对于垂直滚动条,小部件的
yscrollcommand
属性需要设置为滚动条的
set
功能(或类似功能)。此外,滚动条的
命令
属性需要设置为树的
yview
方法(或类似的方法)

例如:

treeScroll = ttk.Scrollbar(...)
tree = ttk.Treeview(...)

treeScroll.configure(command=tree.yview)
tree.configure(yscrollcommand=treeScroll.set)

配置水平滚动条与此类似,不过它当然需要绑定到树的
xview
方法,而不是
yview
方法。

@WhyWhat:您必须更加具体。这正是如何将滚动条附加到treeview小部件的方法。它已经为人们工作了十多年。