如何用tkinter解决python中treeview出父框架的问题?

问题描述 投票:0回答:1

我想加载并修改Excel工作表的内容。我正在使用 tkinter treeview 通过 openpyxl 显示数据。

问题是每当我打开大于框架尺寸的Excel工作表时,它就会跳出窗口并且看不到。我使用了滚动条,希望可以用它滚动数据,但这也不起作用。

以下是仅用于此测试目的的测试代码:

from tkinter import *
from tkinter import ttk
import openpyxl

file_name = "test1.xlsx"

def open_excel(file_name):
    wb = openpyxl.load_workbook(file_name)
    sheet = wb.active
    list_values = list(sheet.values)

    bom_tree.delete(*bom_tree.get_children())

    bom_tree["column"] = list(list_values[0])
    for col in list_values[0]:
        bom_tree.column(col, stretch=NO, minwidth=25, width=200)
        bom_tree.heading(col, text=col)

    for val in list_values[1:]:
        # print(val)
        bom_tree.insert('', "end", values=val)

root= Tk()
root.title('test2')
root.geometry("1000x600")

#create treeview frame
tree_frame= LabelFrame(root, text="tree frame" ,padx=50, pady=50, width=1000)
tree_frame.pack(padx=20,pady=20)

bom_tree = ttk.Treeview(tree_frame, show="headings", height=10)
bom_tree.grid(row=0,column=0, padx=10)

#scroll bars
tree_scroll_vertical = ttk.Scrollbar(tree_frame, orient=VERTICAL, command=bom_tree.yview)
tree_scroll_vertical.grid(row=0,column=1, sticky=NS)
bom_tree.configure(yscrollcommand=tree_scroll_vertical.set)
tree_scroll_horizontal = ttk.Scrollbar(tree_frame, orient=HORIZONTAL, command=bom_tree.xview)
tree_scroll_horizontal.grid(row=1,column=0, sticky=EW)
bom_tree.configure(xscrollcommand=tree_scroll_horizontal.set)

open_excel(file_name)

root.mainloop()

这是输出的屏幕截图:

enter image description here

我正在使用网格,因为我的应用程序需要它,但我也尝试使用打包,但仍然无法找到正确的设置。

python excel user-interface tkinter treeview
1个回答
0
投票

取决于您对应用程序的意图。

如果您希望您的应用程序有一定的列数限制,那么您可以增加屏幕尺寸。

你可以在Excel树视图上实现滚动,但既然你说这失败了(没有说明为什么失败),你可以只使用2个按钮,每次只显示一定数量的列。

如果这些听起来都不好,那么请用应用程序解释你的目标

© www.soinside.com 2019 - 2024. All rights reserved.