如何获取(自动)换行列 ↔ 列中视图的宽度?
How to get the (automatic) wrapping column ↔ the width of the view in columns?
我想获取文本将以“自动”自动换行宽度换行的列。换句话说,我需要的是列中文本 window 的宽度。我试过下面的代码,但是 window_to_text
方法似乎 return 0 不管 它的输入…
max_size = ex_view.viewport_extent()
max_size = (max_size[0] - 5, 1)
print(str(ex_view.rowcol(ex_view.window_to_text(max_size))[0]))
这里最主要的是 API 方法 view.window_to_text()
告诉你,基于特定的 window 位置,point
指的是什么文本,但是文本 point
不是您认为的那样(或者更确切地说,不是您认为的那样)。
缓冲区的内容向 API 显示为一个长字符串,其长度表示正在显示的字符数,point
是该字符串的偏移量。因此,例如,如果缓冲区包含文本“Hello”,则有效文本 points
范围从 0 到 4(含)。
由于 view.window_to_text()
必须 return 0-4 范围内的文本点(在此示例中),它所做的是确定最接近该位置的字符是什么。例如,一行中最右边字符右侧的位置 returns 表示行中最后一个字符的点,以及文件中所有内容下方的位置 returns 最后一个字符文件中的字符。
为了使用此方法确定缓冲区的宽度(或高度),您需要通过向缓冲区添加足够的文本来进行测试,以确保您提供的位置下方有文本,这可能不是你想要的。
要计算view
的视口在一般意义上的字符有多大,您需要使用view.em_width()
和view.line_height()
,它们告诉您宽度和高度dip
中的一个字符。从中您可以轻松准确地计算出当前可能可见的列数和行数:
>>> view.em_width()
10.0
>>> view.line_height()
22.0
>>> view.viewport_extent()
(1215.0, 775.0)
>>> 1215 // 10
121
>>> 775 // 22
35
我想获取文本将以“自动”自动换行宽度换行的列。换句话说,我需要的是列中文本 window 的宽度。我试过下面的代码,但是 window_to_text
方法似乎 return 0 不管 它的输入…
max_size = ex_view.viewport_extent()
max_size = (max_size[0] - 5, 1)
print(str(ex_view.rowcol(ex_view.window_to_text(max_size))[0]))
这里最主要的是 API 方法 view.window_to_text()
告诉你,基于特定的 window 位置,point
指的是什么文本,但是文本 point
不是您认为的那样(或者更确切地说,不是您认为的那样)。
缓冲区的内容向 API 显示为一个长字符串,其长度表示正在显示的字符数,point
是该字符串的偏移量。因此,例如,如果缓冲区包含文本“Hello”,则有效文本 points
范围从 0 到 4(含)。
由于 view.window_to_text()
必须 return 0-4 范围内的文本点(在此示例中),它所做的是确定最接近该位置的字符是什么。例如,一行中最右边字符右侧的位置 returns 表示行中最后一个字符的点,以及文件中所有内容下方的位置 returns 最后一个字符文件中的字符。
为了使用此方法确定缓冲区的宽度(或高度),您需要通过向缓冲区添加足够的文本来进行测试,以确保您提供的位置下方有文本,这可能不是你想要的。
要计算view
的视口在一般意义上的字符有多大,您需要使用view.em_width()
和view.line_height()
,它们告诉您宽度和高度dip
中的一个字符。从中您可以轻松准确地计算出当前可能可见的列数和行数:
>>> view.em_width()
10.0
>>> view.line_height()
22.0
>>> view.viewport_extent()
(1215.0, 775.0)
>>> 1215 // 10
121
>>> 775 // 22
35