Извиняюсь, если на этот вопрос уже был дан ответ, но я не могу найти что-либо там с этими особенностями.
Я заканчиваю инструмент запросов для команды, с которой я работаю, где они могут выбрать поля для запросабаза данных и поиск строки (наряду с другими параметрами).
Результат отправляется в виджет Tkinter TreeView (он был признан наилучшим с точки зрения управления событиями и их визуализации).
У меня есть главная проблема, которая заключается в ограничении размера Treeview определенной шириной, независимо от того, сколько полей выбирает пользователь.Поскольку полный графический интерфейс не масштабируемый, я хочу, чтобы 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, чтобы он не выходил за пределы определенной ширины?Или мне нужно разделить доступную ширину на количество столбцов, которые я получаю из запроса?
Честно говоря, мне все равно, отображается ли вся информация на экране, поэтому я разместил полосы прокрутки.
Вот скриншоты вопроса:
Спасибо за помощь!
РЕДАКТИРОВАТЬ: Изменено Длязациклил код и добавил еще уточняющие скриншоты вопроса