我想加载并修改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()
这是输出的屏幕截图:
我正在使用网格,因为我的应用程序需要它,但我也尝试使用打包,但仍然无法找到正确的设置。
取决于您对应用程序的意图。
如果您希望您的应用程序有一定的列数限制,那么您可以增加屏幕尺寸。
你可以在Excel树视图上实现滚动,但既然你说这失败了(没有说明为什么失败),你可以只使用2个按钮,每次只显示一定数量的列。
如果这些听起来都不好,那么请用应用程序解释你的目标