计算适合 Tkinter 列表框可视区域的项目数量
Calculate the amount of items that would fit in the viewable area of a Listbox in Tkinter
我无法找出适合可查看列表框区域的列表框项目数,因此您无需向下滚动。
抱歉,如果这是微不足道的,我很难弄清楚这一点。
我写了一个小例子来说明我的问题:
from Tkinter import *
from tkFont import Font
myfont=Font(family='Times', size=12)
a=Listbox(activestyle='dotbox', font=myfont)
a.insert(END, *xrange(100))
a.pack(side='left', fill=BOTH, expand=1)
mainloop()
所以现在我有一个列表框,但只有其中的一些项目是可见的。如何在不超出可视区域的情况下计算出我可以容纳多少个?欢迎任何见解。谢谢!
列表框有一个选项height
,它是要显示的文本行数。默认值为 10。由于您保留默认值,因此您的框显示 10 行,包含“0”到“9”。我通过检查我经常使用的 http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html 发现了这一点。它只有一些错误。
tkFont 高度的大小存储在 linespace
度量中,可通过 metrics()
方法访问 -
myfont.metrics()['linespace']
#returns 19 for myfont as initiated in the question
列表框小部件的高度可通过 winfo_height()
检索。总共 -
visible_lines= a.winfo_height()/myfont.metrics()['linespace']
资源 -
http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/fonts.html
我无法找出适合可查看列表框区域的列表框项目数,因此您无需向下滚动。 抱歉,如果这是微不足道的,我很难弄清楚这一点。
我写了一个小例子来说明我的问题:
from Tkinter import *
from tkFont import Font
myfont=Font(family='Times', size=12)
a=Listbox(activestyle='dotbox', font=myfont)
a.insert(END, *xrange(100))
a.pack(side='left', fill=BOTH, expand=1)
mainloop()
所以现在我有一个列表框,但只有其中的一些项目是可见的。如何在不超出可视区域的情况下计算出我可以容纳多少个?欢迎任何见解。谢谢!
列表框有一个选项height
,它是要显示的文本行数。默认值为 10。由于您保留默认值,因此您的框显示 10 行,包含“0”到“9”。我通过检查我经常使用的 http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html 发现了这一点。它只有一些错误。
tkFont 高度的大小存储在 linespace
度量中,可通过 metrics()
方法访问 -
myfont.metrics()['linespace']
#returns 19 for myfont as initiated in the question
列表框小部件的高度可通过 winfo_height()
检索。总共 -
visible_lines= a.winfo_height()/myfont.metrics()['linespace']
资源 - http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/fonts.html