Select 文本小部件中使用快捷方式的一行文本,Tkinter
Select A Line Of Text Using A Shortcut In Text Widget, Tkinter
我决定开始一个 Tkinter 项目,以更好地了解 Tkinter 并扩展我的知识。我决定做一个记事本,除了遇到一个小问题外,我已经设法做到了。我想在 Tkinter 中制作一个自定义快捷方式,这将帮助我复制长行文本而无需滚动很多。我知道有一些快捷方式,例如使用 Shift
从光标所在的位置进行复制,但我想做的是制作我自己的自定义快捷方式。比方说,按 Ctrl + Q
将复制光标所在的整行或类似内容。如果可能的话,能够 select
当前行而不使用另一个自定义快捷方式复制它也是一个不错的功能。例如,参见图片:
我对这个问题做了很多研究,但我还没有找到任何有用的信息。我不想使用 windows 中已经存在的快捷方式,因为我想创建自己的自定义快捷方式。问题不在于我如何使用绑定功能,问题在于我将如何实际制作一个函数,该函数将 select 该行并复制它。
谢谢! :)
非常简单,你只需要使用Text
widget indices,它们提供了很好的功能。在这种情况下最有用的是 'insert'
和 'linestart'
以及 'lineend'
因为它们很容易允许 select 光标所在的整行。剩下的就很简单了:
import tkinter as tk
def copy_line(event=None):
data = text.get('insert linestart', 'insert lineend')
root.clipboard_clear()
root.clipboard_append(data)
def select_line(event=None):
# `sel` is a special tag name that represents the current selection if any
text.tag_add('sel', 'insert linestart', 'insert lineend')
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.bind('<Control-q>', copy_line)
text.bind('<Control-e>', select_line)
root.mainloop()
我决定开始一个 Tkinter 项目,以更好地了解 Tkinter 并扩展我的知识。我决定做一个记事本,除了遇到一个小问题外,我已经设法做到了。我想在 Tkinter 中制作一个自定义快捷方式,这将帮助我复制长行文本而无需滚动很多。我知道有一些快捷方式,例如使用 Shift
从光标所在的位置进行复制,但我想做的是制作我自己的自定义快捷方式。比方说,按 Ctrl + Q
将复制光标所在的整行或类似内容。如果可能的话,能够 select
当前行而不使用另一个自定义快捷方式复制它也是一个不错的功能。例如,参见图片:
我对这个问题做了很多研究,但我还没有找到任何有用的信息。我不想使用 windows 中已经存在的快捷方式,因为我想创建自己的自定义快捷方式。问题不在于我如何使用绑定功能,问题在于我将如何实际制作一个函数,该函数将 select 该行并复制它。
谢谢! :)
非常简单,你只需要使用Text
widget indices,它们提供了很好的功能。在这种情况下最有用的是 'insert'
和 'linestart'
以及 'lineend'
因为它们很容易允许 select 光标所在的整行。剩下的就很简单了:
import tkinter as tk
def copy_line(event=None):
data = text.get('insert linestart', 'insert lineend')
root.clipboard_clear()
root.clipboard_append(data)
def select_line(event=None):
# `sel` is a special tag name that represents the current selection if any
text.tag_add('sel', 'insert linestart', 'insert lineend')
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.bind('<Control-q>', copy_line)
text.bind('<Control-e>', select_line)
root.mainloop()