【问题标题】:Scrollbar in Tkinter not moveableTkinter 中的滚动条不可移动
【发布时间】:2023-03-08 10:57:01
【问题描述】:

我正处于构建程序的初始阶段,我可以从 TreeView 中获取项目并将它们移动到列表框中。我在 Treeview 和 listbox 中都添加了滚动条,这样当它们变长时,我可以滚动查看内容。目前,我在 Treeview 中填充的项目超出了窗口所能容纳的范围。我可以使用鼠标滚轮滚动 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()

【问题讨论】:

    标签: python-3.x tkinter treeview


    【解决方案1】:

    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)
    

    【讨论】:

    • 谢谢,这真的很有帮助。我忘记了命令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2016-07-07
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多