JDM*_*JDM 10 treeview tkinter scrollbar ttk python-2.7
我正在使用ttk Treeview小部件来实现文件夹/路径选择对话框.除了我的水平滚动条不会激活外,它都按预期工作.无论文件夹路径横向有多宽,无论窗口有多窄,都不会出现水平滑块.垂直滚动工作正常.
当你在树视图中只使用一列时,或者只是在配置和连接小部件时出现新手错误时,我认为它要么是某种限制.我打赌后者.
扩展对话框以显示完整文件夹深度的示例:

对话框缩小到水平滚动应该激活的程度(但不是):

这是我的GUI布局代码:
winDirSel = tk.Toplevel()
winDirSel.title('Select Test Directory...')
tvwDirSel = ttk.Treeview(winDirSel,
height=10,padding=3,
show='tree')
lblTestDir = tk.Label(winDirSel, relief=tk.SUNKEN,
justify=tk.LEFT, anchor=tk.W,
textvariable=ctrlTestDir,width=80)
scbHDirSel = ttk.Scrollbar(winDirSel,
orient=tk.HORIZONTAL,
command=tvwDirSel.xview)
scbVDirSel = ttk.Scrollbar(winDirSel,
orient=tk.VERTICAL,
command=tvwDirSel.yview)
tvwDirSel.configure(xscrollcommand=scbHDirSel.set,
yscrollcommand=scbVDirSel.set)
lblTestDir.grid(row=0,column=0,sticky=tk.EW)
tvwDirSel.grid(row=1,column=0,sticky=tk.NSEW)
scbVDirSel.grid(row=1,column=1,sticky=tk.NS)
scbHDirSel.grid(row=2,column=0,sticky=tk.EW)
winDirSel.rowconfigure(1,weight=1)
winDirSel.columnconfigure(0,weight=1)
Run Code Online (Sandbox Code Playgroud)
JDM*_*JDM 10
OK,一些玩后minwidth和stretch,我想我有一个更好的处理.水平滚动由列边缘离开窗口边界而不是列内容触发.因此,您可以使用这些参数来强制列更宽,从而强制滚动.
但问题是你失去了自动调整列宽以适应树本身的宽度.您要么必须强制它以适应任何(假定的)可能的文件夹深度,要么您在文件夹名称被截断在列的右边界处.
所以底线:它只是小部件本身的限制.(至少关于它在我的平台上的行为,MS Windows.)