我决定开始一个Tkinter项目,以便更好地了解Tkinter,并扩展我的知识。我决定做一个记事本,除了遇到一个小问题外,我设法做到了。我想做一个自定义的快捷键在Tkinter,这将帮助我复制长行的文本,而不必滚动很多。我知道有一些快捷方式,比如使用Shift
从光标所在的位置进行复制,但我想做的是创建自己的自定义快捷方式。例如,比方说,按Ctrl + Q
将复制光标所在的整行或类似的内容。如果可能的话,能够在不使用另一个自定义快捷方式复制当前行的情况下对当前行进行select
也是一个很好的特性。例如,请参见图像:
我对这个问题做了很多研究,但我没有找到任何有用的信息。我不想使用窗口中已经存在的快捷方式,因为我想创建自己的自定义快捷方式。问题不在于我如何使用绑定特性,问题在于我将如何实际创建一个函数来选择行并复制它。
谢谢!:)
发布于 2022-01-03 03:46:35
这很简单,您只需使用Text
widget indices,它们就提供了很好的功能。在本例中,最有用的是'insert'
、'linestart'
和'lineend'
,因为它们很容易地允许选择游标所在的整行。其余的都很简单:
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()
https://stackoverflow.com/questions/70564873
复制