我有一個(gè)由 tk.treeview 創(chuàng)建的表,例如,有 10 列。目標(biāo)是構(gòu)建一個(gè)帶有水平滾動(dòng)條的樹形視圖小部件,小部件的視圖寬度設(shè)置為大約 4 列,并使用水平滾動(dòng)條查看其他列。使用 tk.Frame 作為父窗口小部件并使用滾動(dòng)條,垂直滾動(dòng)將隱藏標(biāo)題,因此不要使用它。平臺(tái):WIN 10 Python:3.8.6 tkinter:8.6import tkinter as tkfrom tkinter import ttkroot = 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.xviewy_scrollbar['command'] = tree.yviewroot.mainloop()問題是如何將視圖寬度設(shè)置為大約 4 列并使用水平滾動(dòng)條工作?像這樣 ?。]有窗口調(diào)整大小)
1 回答

慕標(biāo)5832272
TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
有一個(gè)棘手的方法可以做到這一點(diǎn):
最初將列寬設(shè)置為較小的尺寸,對(duì)于您的情況,它是 40(即 400 / 10)
使用強(qiáng)制更新樹視圖
tree.update()
將列寬設(shè)置為所需的大小,即 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
添加回答
舉報(bào)
0/150
提交
取消