官术网_书友最值得收藏!

Adding the cursor information bar

The cursor information bar is simply a small label at the bottom-right corner of the Text widget that displays the current position of the cursor, as shown in the following screenshot:

The user can choose to show/hide this info bar from the View menu (2.11.py).

Begin by creating a Label widget within the Text widget and pack it in the bottom-right corner, as follows:

cursor_info_bar = Label(content_text, text='Line: 1 | Column: 1')
cursor_info_bar.pack(expand=NO, fill=None, side=RIGHT, anchor='se')

In many ways, this is similar to displaying line numbers. Here, too, the positions must be calculated after every keystroke, after events such as cut, paste, undo, redonew, and open, or activities that lead to a change in cursor positions. Because this too needs to be updated for all the changed content, for every keystroke, we will update on_content_changed to update this, as follows:

def on_content_changed(event=None):
update_line_numbers()
update_cursor_info_bar()

def show_cursor_info_bar():
show_cursor_info_checked = show_cursor_info.get()
if show_cursor_info_checked:
cursor_info_bar.pack(expand='no', fill=None, side='right', anchor='se')
else:
cursor_info_bar.pack_forget()

def update_cursor_info_bar(event=None):
row, col = content_text.index(INSERT).split('.')
line_num, col_num = str(int(row)), str(int(col)+1) # col starts at 0
infotext = "Line: {0} | Column: {1}".format(line_num, col_num)
cursor_info_bar.config(text=infotext)

The code is simple. We get the row and column for the current cursor position by using the index(INSERT) method and update the labels with the latest row and column of the cursor.

Finally, the function is connected to the existing menu item by using a callback command:

view_menu.add_checkbutton(label='Show Cursor Location at Bottom',
variable=show_cursor_info, command=show_cursor_info_bar)
主站蜘蛛池模板: 锡林郭勒盟| 冀州市| 纳雍县| 晋中市| 湘潭县| 武威市| 天镇县| 大英县| 鸡西市| 西华县| 武胜县| 肃南| 昌黎县| 乡宁县| 宜兴市| 云梦县| 湘潭县| 远安县| 民县| 南乐县| 建瓯市| 阿拉善左旗| 敦化市| 仙桃市| 隆林| 堆龙德庆县| 平昌县| 太仓市| 澄江县| 桂东县| 沁源县| 龙山县| 清原| 靖边县| 会同县| 绥化市| 于田县| 三亚市| 金华市| 讷河市| 威信县|