Tkinter 中的滚动条不可移动

Scrollbar in Tkinter not moveable

我正处于构建程序的初始阶段,我可以在该程序中从 TreeView 中获取项目并将它们移动到列表框中。我已将滚动条添加到 Treeview 和列表框,以便当它们变长时,我可以滚动查看内容。目前,我在 Treeview 中填充的项目多于 window 中无法容纳的项目。我可以用鼠标滚轮滚动 Treeview,但是当我单击并拖动滚动条上的框时,滚动条不会移动。我正在使用 Python 3.7。我需要一些帮助来弄清楚发生了什么。

import tkinter as tk
from tkinter import ttk
import l5x



root = tk.Tk()
root.geometry("600x400")
root.resizable(False, False)
root.title("TreeView Example")

tree_frame = ttk.Frame(root)
list_frame = ttk.Frame(root)
tree = ttk.Treeview(tree_frame)
tree_scroll = ttk.Scrollbar(tree_frame,orient="vertical",command=tree.yview())
tree.configure(yscrollcommand=tree_scroll.set)
listbox = tk.Listbox(tree_frame)
list_scroll = ttk.Scrollbar(tree_frame,orient="vertical",command=listbox.yview())
listbox.configure(yscrollcommand=list_scroll.set)


tree_frame.columnconfigure(0, weight=1)
tree_frame.columnconfigure(1, weight=1)
tree_frame.columnconfigure(2, weight=1)
tree_frame.columnconfigure(3, weight=1)


for i in range(0,20):
    tree.insert('','end',i,text="blah")

tree_frame.grid(row=0,column=0,sticky="NSEW")
tree.grid(row=0,column=0,sticky="NSEW")
tree_scroll.grid(row=0,column=1,sticky="NS")
listbox.grid(row=0,column=2,sticky="NSEW")
list_scroll.grid(row=0,column=3,sticky="NS")



root.mainloop()

command 属性要求您传递对可调用函数的引用。相反,您正在调用 yview() 方法并将结果提供给 command 属性。

您的滚动条定义需要如下所示:

tree_scroll = ttk.Scrollbar(tree_frame,orient="vertical",command=tree.yview)
list_scroll = ttk.Scrollbar(tree_frame,orient="vertical",command=listbox.yview)