[英]Copying and pasting text displayed on tkinter text widget
我有一個帶有顯示“ABCDEF”的文本小部件的 tkinter 界面。 我希望能夠分別使用 ctrl+c 和 ctrl+v 復制和粘貼此文本。 我還想防止任何其他鍵更改文本(退格鍵、空格鍵,基本上除了 ctrl+c 和 ctrl+v 之外的任何鍵)。
為了完成這項任務,我嘗試了一種在此處找到的方法(最后一段代碼): https ://www.delftstack.com/howto/python-tkinter/how-to-make-tkinter-text-widget-read- 只要/
此代碼不允許通過快捷方式復制和粘貼。 如下所示。 我想知道如何使用快捷方式復制和粘貼文本小部件顯示的文本,同時也不允許其他鍵更改文本。 任何幫助,將不勝感激。
import tkinter as tk
def ctrlEvent(event):
if 12 == event.state and event.keysym == 'C':
return
else:
return "break"
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.bind("<Key>", lambda e: ctrlEvent(e))
readOnlyText.pack()
root.mainloop()
您擁有代碼的方式已經不允許其他鍵編輯文本框。 下面有對<ctrl-c>
的檢測並添加了對<ctrl-v>
的檢測。 它還具有每個功能。
在文本框中使用方法selection_get()
從文本框中獲取突出顯示的文本。
然后清除剪貼板並使用root.clipboard_clear()
和root.clipboard_append(content)
從文本框中附加所需的內容。
然后使用root.selection_get(selection='CLIPBOARD')
從剪貼板中檢索項目。
import tkinter as tk
def ctrlEvent(event):
if event.state == 4 and event.keysym == 'c':
content = readOnlyText.selection_get()
root.clipboard_clear()
root.clipboard_append(content)
return
elif event.state == 4 and event.keysym == 'v':
readOnlyText.insert('end', root.selection_get(selection='CLIPBOARD'))
else:
return
root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.bind("<Key>", lambda e: ctrlEvent(e))
readOnlyText.pack()
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.