Python tkinter:如何在我的树状视图中添加水平滚动条?
您好,我已经创建了一个仪表板,它有一个垂直滚动条,但水平滚动条不适合我?垂直滚动条工作正常。当我运行代码时,垂直滚动条工作正常,但水平条根本不移动。我如何让它工作 以下是我的代码片段 垂直滚动条工作正常Python tkinter:如何在我的树状视图中添加水平滚动条?,python,tkinter,Python,Tkinter,您好,我已经创建了一个仪表板,它有一个垂直滚动条,但水平滚动条不适合我?垂直滚动条工作正常。当我运行代码时,垂直滚动条工作正常,但水平条根本不移动。我如何让它工作 以下是我的代码片段 垂直滚动条工作正常 vsb = ttk.Scrollbar(root, orient="vertical", command=tree.yview) vsb.place(x=320, y=45, height=200 + 180) tree.configure(yscrollcommand=vsb.set) 然而
vsb = ttk.Scrollbar(root, orient="vertical", command=tree.yview)
vsb.place(x=320, y=45, height=200 + 180)
tree.configure(yscrollcommand=vsb.set)
然而,当我为水平方向添加代码时,它不会
hsb = ttk.Scrollbar(root, orient="horizontal", command=tree.xview)
hsb.place(x=320, y=445)
tree.configure(xscrollcommand=hsb.set)
请参阅下面的完整代码
from tkinter import *
from tkinter import ttk
import tkinter as tk
import SQL_upload_file
import Expenses_SQL_Create_Table
tablename = 'list_all'
df = Expenses_SQL_Create_Table.read_from_table_2(tablename)
df = df.astype(int)
for i in range(1,len(df.columns)+1):
df[df.columns[i-1]] = df[df.columns[i-1]].apply(lambda x : "{:,}".format(x))
df.reset_index(inplace=True)
rows = df.values.tolist()
root = Tk()
def treeframe():
frm = Frame(root)
frm.pack(padx=0, pady=10, anchor='nw')
frm.pack(padx=0,pady=10)
tv = ttk.Treeview(frm,columns=(1,2,3,4,5,6,7,8,9,10,11,12),show = 'headings',height='50')
tv.pack()
tv.column("#0", minwidth=100, width=100)
tv.column(1, minwidth=0, width=150)
for i in range(2,13):
tv.column(i, minwidth=0, width=70)
tv.heading(1,text='Date')
tv.heading(2,text='Expense')
tv.column("#0", minwidth=0, width=100, stretch=NO)
for i in rows:
tv.insert('','end',values=i)
def treeframe1():
root.minsize(width=600, height=700)
#root.resizable(width=0, height=0)
tree = ttk.Treeview(root, selectmode='browse',height='10')
tree.place(x=330, y=45)
#Vertical scroll bar
vsb = ttk.Scrollbar(root, orient="vertical", command=tree.yview)
vsb.place(x=320, y=45, height=200 + 180)
tree.configure(yscrollcommand=vsb.set)
#Horizontal scroll bar
hsb = ttk.Scrollbar(root, orient="horizontal", command=tree.xview)
hsb.place(x=320, y=445)
tree.configure(xscrollcommand=hsb.set)
tree["columns"] = list(range(1, len(df.columns)+1))
tree['show'] = 'headings'
tree['height'] = '20'
colnames = df.columns
tree.column(1, width=90,anchor='c')
tree.heading(1, text=colnames[0])
for i in range(2,len(df.columns)+1):
tree.column(i, width=100,anchor='c')
tree.heading(i, text=colnames[i-1])
for i in rows:
tree.insert('','end',values=i)
def delete_command():
tree["columns"] = ()
#tree.delete(*tree.get_children())
b2 = Button(root, text="delete all", width=12, command=delete_command)
# b1.grid(row=10,column=8)
b2.place(x=130, y=45)
treeframe1()
root.title('New Data')
root.geometry('650x500')
#root.resizable(False,False)
root.mainloop()
由于您在树视图上使用了
place(…)
,因此它将显示所有列。因此,水平滚动条将无效,因为不需要水平滚动。@acw1668谢谢,唯一的问题是,当我只使用一个屏幕时,我可以扩展视图以查看所有列,在没有水平滚动的情况下,无法看到右边的内容,因为您在树视图上使用了place(…)
,它将显示所有列。因此,水平滚动条将无效,因为不需要水平滚动。@acw1668谢谢,唯一的问题是,当我只使用一个屏幕时,我可以扩展视图以查看所有列,而在没有水平滚动的情况下,我看不到右边的内容