当前位置: 首页 > 面试题库 >

如何使用Tkinter将垂直滚动条附加到树视图?

戴化
2023-03-14
问题内容

我一直在尝试为tkinter
treeview附加水平和垂直滚动条。在我的主要应用程序中,所有数据均来自sql数据库,因此我需要能够在一个适当的窗口中滚动浏览大量数据。我已经设法将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滚动条的功能(或类似功能的东西)。同样,command需要将滚动条的属性设置为yview树的方法(或类似的方法)

例如:

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

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

配置水平滚动条类似,尽管当然需要将其绑定到xview方法而不是yview树的方法。



 类似资料:
  • 问题内容: 我的目标是让滚动条位于全屏窗口的右侧,允许用户在各种不同的小部件(例如标签和按钮)中上下滚动。从我在该站点上看到的其他答案中,我得出的结论是,必须将滚动条分配给画布才能使其正常运行,我已经尝试将其包含在代码中,但还没有太多成功。 以下代码显示了到目前为止我已完成的工作的简化版本: 运行此代码时,我面临两个问题: 一种是滚动条处于非活动状态,并且不允许用户向下滚动以查看其余文本。 另一个

  • 问题内容: 我想增加一种滚动菜单项的方法,就像滚动滚动菜单项的列表一样。 假设我有10个菜单项。我想一次只显示5个菜单项,并且我会使用底部或顶部的垂直滚动按钮来显示未列出的菜单项并隐藏我刚刚看到的菜单项。 可能吗?我正在使用JIDE软件的,单击时会显示。我试图保持放置命令栏的外观,因此除非确实需要,否则我不想将其替换为。 问题答案: 可能是这个 http://www.javabeginner.co

  • 问题内容: 如何将垂直滚动条放在树的左侧? 问题答案: 如果仅在Windows上,则可以执行以下操作: 否则,您可能需要研究Snippet296,它显示了如何使用ScrolledComposite处理Tree的滚动。通过在此代码段中将样式SWT.RIGHT_TO_LEFT添加到ScrolledComposite,并将样式SWT.LEFT_TO_RIGHT添加到Tree,我在左侧有了一个滚动条。但是

  • 我有一个简单的ListView程序,其中试图附加滚动条。上下滚动时列表没有移动,在这里,列表应该相应地移动。似乎,我无法正确设置contentItem。寻找一些提示。 请在下面找到我的示例核心,于是我在listView中添加了一个垂直滚动条。rolesListModel是我的模特。 主要的qml

  • 问题内容: 我试图将滚动条附加到“文本”字段,但无法这样做。这是代码段: 这段代码在我的文本字段旁边放置了一个非常小的滚动条(并且非常小,我的意思是您可以看到向上和向下箭头,但中间没有看到)。当文本字段填满时,我可以使用它滚动,但是至少有一种方法可以设置滚动条的高度,以使其看起来与文本字段的高度相同吗? 问题答案: Tkinter具有三个 几何管理器 :包装,网格和位置。 通常建议将包装和网格放在

  • 我正在使用下面的代码创建一个回收器视图。recyclerview有一个网格布局管理器,其项计数最多为每行2个。 不幸的是,我嵌套在ConstraintLayout中的回收器视图根本没有滚动。我错过了什么?约束布局是否支持相同的?