如何在 tkinter 中查看树视图的部分区域和水平滚动? [英] How to view partial area of a treeview and horizontal scrollable in tkinter?

查看:11
本文介绍了如何在 tkinter 中查看树视图的部分区域和水平滚动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个由 tk.treeview 创建的表,例如,有 10 列.目标是构建一个带有水平滚动条的treeview小部件,小部件的视图宽度设置为4列左右,并使用水平滚动条查看其他列.

I have a table created by tk.treeview, for example, there're 10 columns. The target is to build a treeview widget with horizontal scrollbar, the view width of widget is set just about 4 columns and use horizontal scrollbar to view other columns.

使用 tk.Frame 作为父小部件和滚动条,垂直滚动会隐藏标题,所以不要使用它.

Using tk.Frame as parent widget and with scrollbar, vertical scroll will hide the header, so not use it.

平台:WIN 10蟒蛇:3.8.6tkinter:8.6

Platform: WIN 10 Python: 3.8.6 tkinter: 8.6

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

# root.columnconfigure(0, weight=1)
# root.rowconfigure(0, weight=1)

columns = [f'Column {i}' for i in range(10)]

x_scrollbar = tk.Scrollbar(root, orient=tk.HORIZONTAL)
x_scrollbar.grid(row=1, column=0, sticky=tk.E+tk.W)
y_scrollbar = tk.Scrollbar(root, orient=tk.VERTICAL)
y_scrollbar.grid(row=0, column=1, sticky=tk.N+tk.S)

tree = ttk.Treeview(root, columns=columns, height=10, show="headings",
    xscrollcommand=x_scrollbar.set, yscrollcommand=y_scrollbar.set)
tree.grid(row=0, column=0, sticky=tk.N+tk.S+tk.E+tk.W)

for col in tree['columns']:
        tree.heading(col, text=f"{col}", anchor=tk.CENTER)
        tree.column(col, anchor=tk.CENTER, width=100)

for i in range(100):
    tree.insert('', 'end', values=[i*10+j for j in range(len(columns))])

x_scrollbar['command'] = tree.xview
y_scrollbar['command'] = tree.yview

root.mainloop()

问题是如何将视图宽度设置为大约 4 列并使用水平滚动条工作?像这样 !(无窗口调整大小)

The question is how can I set the view width just about 4 columns and with horizontal scrollbar work ? like this ! (no windiw resize)

推荐答案

有一个棘手的方法:

  • 最初将列宽设置为较小的尺寸,对于您的情况,它是 40(即 400/10)
  • 使用 tree.update()
  • 强制更新树视图
  • 将列宽设置为所需的大小,即 100
for col in tree['columns']:
    tree.heading(col, text=f"{col}", anchor=tk.CENTER)
    tree.column(col, anchor=tk.CENTER, width=40) # initially smaller size
tree.update()
for col in tree['columns']:
    tree.column(col, width=100) # restore to desired size

这篇关于如何在 tkinter 中查看树视图的部分区域和水平滚动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆