Python Tkinter Treeview使用可变SQL查询固定宽度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Tkinter Treeview使用可变SQL查询固定宽度相关的知识,希望对你有一定的参考价值。
如果之前得到了回答,请道歉,但我找不到任何有关这些细节的内容。
我正在为我正在使用的团队完成一个查询工具,他们可以选择字段来查询数据库和搜索字符串(以及其他选项)。
结果被发送到Tkinter TreeView小部件(发现这是事件控制和可视化方面的最佳方法)。
我有一个主要问题是将Treeview的大小限制在一定的宽度,无论用户选择多少个字段。由于完整的GUI不可扩展,我希望Treeview具有最大大小。
我试图在定义列时包含宽度,但似乎绕过了它。
Treeview是LabelFrame的子节点,定位用网格定义。
这里是我正在做的设置TreeView的代码示例(因为这是一个公司应用程序,我必须小心公开一些字段名称):
CoreQuery.groupResults = LabelFrame(CoreQuery.root, text="Query Result", padx=5, pady=5, height=470,width=960)
CoreQuery.tree = ttk.Treeview(CoreQuery.groupResults, selectmode='browse')
CoreQuery.tree.bind("<Double-1>", CoreQuery.OnTreeDoubleClick)
CoreQuery.scrollbar_horizontal = ttk.Scrollbar(CoreQuery.root, orient='horizontal', command=CoreQuery.tree.xview)
CoreQuery.scrollbar_vertical = ttk.Scrollbar(CoreQuery.root, orient='vertical', command=CoreQuery.tree.yview)
CoreQuery.tree.config(height=18, xscrollcommand=CoreQuery.scrollbar_horizontal.set, yscrollcommand=CoreQuery.scrollbar_vertical.set)
CoreQuery.tree.grid(row=0, sticky="w")
CoreQuery.scrollbar_horizontal.grid(row=1,column=0, sticky='ns')
CoreQuery.scrollbar_vertical.grid(row=0, column=2, sticky='ew')
CoreQuery.scrollbar_horizontal.configure(command=CoreQuery.tree.xview)
CoreQuery.scrollbar_vertical.configure(command=CoreQuery.tree.yview)
CoreQuery.tree.configure(yscroll=CoreQuery.scrollbar_vertical, xscroll=CoreQuery.scrollbar_horizontal)
以下是接收SQL查询结果并将数据放入TreeView的方法:
def ScreenPrintResults(header,rows):
columns=len(header)
minColumnsize=math.ceil(965/columns)
#Clear Treeview
CoreQuery.tree.delete(*CoreQuery.tree.get_children())
for values in rows:
values[0] = str(values[0]).replace(".0", "")
if (values[0].isdigit()):
values[0] = int(values[0])
auxCount=0
CoreQuery.tree['columns']=header
for value in header:
CoreQuery.tree.heading(value, text=str(value))
CoreQuery.tree.column(value, stretch=tk.NO)
for items in rows:
if auxCount==0:
CoreQuery.tree.column('#0', width=30, stretch=tk.NO)
else:
CoreQuery.tree.column(value, width=minColumnsize)
CoreQuery.tree.insert('',tk.END,auxCount+1,text=str(auxCount+1),
values=list(items))
auxCount=auxCount+1
CoreQuery.updateMessage.config(foreground="Black", font="Verdana 10 bold")
CoreQuery.message.set("...")
是否有任何限制我可以添加TreeView的宽度,以便它不超过一定的宽度?或者我是否需要将可用宽度拆分为从查询中获得的列数?
老实说,我不在乎屏幕上是否有所有信息,因此我放置了滚动条。
谢谢您的帮助!
编辑:更改了For循环代码并添加了更多澄清问题的屏幕截图
下面的例子展示了如何设置columns
和minwith
的maxwidth
和integers
的宽度。您还可以使用rowheight
属性设置行的高度,以便在树中很好地显示文本。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
tree = ttk.Treeview(root, column=("col1","col2"), show="headings")
style = ttk.Style(root)
style.configure('my.Treeview', rowheight=50)
tree.configure(style='my.Treeview')
tree.heading("#0", text="COMPANY NAME")
tree.heading("#1", text="DEPARTMENT")
tree.heading("#2", text="BRANCH")
tree.column("#0", stretch=tk.NO, minwidth=100, width=000)
tree.column("#1", stretch=tk.NO, minwidth=100, width=400)
tree.column("#2", stretch=tk.NO, minwidth=100, width=400)
tree.insert("", tk.END, values=("Am using python version 3.6.1
on windows machine ", "This an example Tkinter Treeview in Python, which is from
ttk class make"))
tree.insert("", tk.END, values=("This an example Tkinter Treeview in Python, which is from
ttk class make sure #import ttk
also from tkinter import *", "Apologies if this was answered before but I cannot find "))
tree.pack()
root.mainloop()
以上是关于Python Tkinter Treeview使用可变SQL查询固定宽度的主要内容,如果未能解决你的问题,请参考以下文章
Python如何改变tkinter.ttk.Treeview表格组件的每行的行高?
python中tkinter treeview如何获取选中的条目