У меня есть следующий код для создания списка с виджетом Treeview.
import tkinter as tk
import tkinter.ttk as ttk
class AppBase:
def __init__(self):
self.mywin = tk.Tk()
self.mywin.geometry("%dx%d+%d+%d" % (800, 600, 5, 5))
self.frame1 = tk.Frame(self.mywin)
self.frame1.pack()
lb_header = ['name', 'surname']
lb_list = [
('John', 'Smith') ,
('Larry', 'Black') ,
('Walter', 'White') ,
('Fred', 'Becker')
]
self.tree = ttk.Treeview(columns=lb_header, show="headings")
self.tree.grid(in_=self.frame1)
for col in lb_header:
self.tree.heading(col, text=col.title())
for item in lb_list:
self.tree.insert('', 'end', values=item)
def start(self):
self.mywin.mainloop()
app=AppBase()
app.start()
Это работает, но если строк мало, в конце будут пустые строки.
Если я увеличиваю количество строк данных, у меня становится меньше пустых строк, я думаю, что имеется минимальное количество строк, а если строки данных меньше минимального, в списке отображаются белые линии.
Как я могу это исправить и сделать так, чтобы в списке не было минимальных строк?
Это не пустые строки, это - высота treeview виджета.
я никогда не работал с tkinter прежде, но рассмотрение документов, которые я нашел height
опция :
height Specifies the number of rows which should be visible. Note: the requested width is determined from the sum of the column widths.
, Таким образом, можно указать treeview высоту сами, как это:
self.tree = ttk.Treeview(columns=lb_header, show="headings", height=2)
Или соответствовать количеству объектов:
self.tree = ttk.Treeview(columns=lb_header, show="headings", height=len(lb_list))
, Хотя я не рекомендовал бы это, когда это вырастет из экрана, когда много объектов будет добавлено.
Qt version 5.4.2 in /opt/qt54/lib
, но как сделать его как значение по умолчанию – B.rayane 4 June 2017 в 05:59