class table(Frame):
def __init__(self, parent,headings=None,data=None):
Frame.__init__(self, parent,relief='ridge')
self.parent=parent
self.headings=headings
self.data = data
self.CreateUI(self.headings)
self.LoadTable(self.data)
self.yscrollbar = Scrollbar(self.parent,orient=VERTICAL)
self.yscrollbar.grid(row=0,column=1,sticky = (N,S,W,E))
self.yscrollbar.config(command=self.treeview.yview)
self.treeview.config(yscrollcommand=self.yscrollbar.set)
self.xscrollbar = Scrollbar(self.parent,orient=HORIZONTAL)
self.xscrollbar.grid(row=1,column=0,sticky = (N,S,W,E))
self.treeview.config(xscrollcommand=self.xscrollbar.set)
self.xscrollbar.config(command=self.treeview.xview)
self.grid(row=0,column=0)
def CreateUI(self,headings):
tv = Treeview(self,height=20)
if(headings==None):
tv['columns'] = ('starttime', 'endtime', 'status')
else:
tv['columns'] = headings[1:]
tv.heading("#0", text=headings[0], anchor='w')
tv.column("#0", anchor="w")
for i in headings[1:]:
tv.heading(i, text=i)
tv.column(i, anchor='center')
tv.grid(sticky = (N,S,W,E))
self.treeview = tv
def LoadTable(self,data):
if(data==None):
for i in range(100):
self.treeview.insert('', 'end', text="first", values=('sdfa','asdfasd0','asdfasdf'))
self.treeview.insert('', 'end', text="Second", values=('sdfa','asdfasd0','asdfasdf'))
self.treeview.insert('', 'end', text="third", values=('sdfa','asdfasd0','asdfasdf'))
else:
for line in data:
self.treeview.insert('', 'end', text=line[0], values=line[1:])
从上面的代码我用树视图创建了一个表,我的y轴滚动工作正常,但我无法在xscrollbar上工作。请帮助我,谢谢你。我附加了一个结果Treeview的图像(表格像一个)。 screeshot of my tkinter window
答案 0 :(得分:0)
根据屏幕截图,您的桌子看起来没有根窗口提供的足够空间。 滚动条可能在那里,但由于表格是在右侧切割而不可见,因此您需要调整用于表格根窗口的几何管理器的属性
答案 1 :(得分:0)
def CreateUI(self,headings):
tv = Treeview(self,height=20)
if(headings==None):
tv['columns'] = ('starttime', 'endtime', 'status')
else:
tv['columns'] = headings[1:]
tv.heading("#0", text=headings[0], anchor='w')
--> tv.column("#0", anchor="center",width=100,minwidth=100)
for i in headings[1:]:
tv.heading(i, text=i)
--> tv.column(i, anchor='center',width=90,minwidth=100)##
tv.pack(expand=Y)
self.treeview = tv
这个功能的一些编辑帮助我完成了,谢谢那些尝试过的人。 我使用了树视图的额外参数,即最小宽度。 宽度和最小宽度的差异将使我们能够解决这个问题。
答案 2 :(得分:0)
您可以水平滚动树视图,重新调整colomns(在运行时,向右拖动'关闭屏幕')xscrollbar被激活,或者调整列的大小(在创建滚动条和树视图后使用事件的代码,例如按下按钮(例如当树视图被填满时),否则' .xview'什么都没有检测到
vsbx = tkinter.Scrollbar(root_search_stock, orient="horizontal")
vsbx.place(x= 40, y = 550, width = 1000)
tree = tkinter.ttk.Treeview(root_search_stock,\
columns=column_names,yscrollcommand=vsby.set,xscrollcommand=vsbx.set)
tree.place(x = 50, y = 300)
vsbx.config(command = tree.xview)