在Python中从剪贴板复制内容时出现tkinter错误

我正在编写一个Python脚本,它将检查剪贴板内容并在控制台中打印它们.下面是我正在使用的脚本.

import time
from tkinter import Tk

while True:
    r = Tk()
    result = r.selection_get(selection="CLIPBOARD")
    print(result)
    time.sleep(2)

当我运行它而不复制任何文本时,出现以下错误:

return self.tk.call(('selection', 'get') + self._options(kw))
_tkinter.TclError: CLIPBOARD selection doesn't exist or form "STRING" not defined

我了解它的出现是因为剪贴板中没有内容.复制完任何文本后,代码即可正常运行.为了解决该问题,我以以下方式重写了代码:

import time
from tkinter import Tk

r = Tk()
x = 1
while x < 2:
    r.clipboard_clear()
    r.clipboard_append("Starter Text")
    x += 1

while True:
    r.clipboard_clear()
    result = r.selection_get(selection="CLIPBOARD")
    print(result)
    time.sleep(2)

我写这个是为了可以通过在剪贴板中放置启动文本来启动文件.这将有助于停止错误.即使它停止了错误的发生,该代码现在仍以重复的方式仅打印“入门文本”.即使将内容复制到剪贴板之后,它们似乎也没有被打印出来.

我可以得到一些有关如何避免该错误的建议,同时在我将某些内容复制到剪贴板时同时打印这些值.

解决方法:

由于这是设计行为,因此无法避免该错误,但是可以处理该错误.

import tkinter as tk
...
try:
    selection = r.selection.get(selection="CLIPBOARD")
except tk.TclError:
    selection = None
...
上一篇:javascript – 使用Greasemonkey获取剪贴板内容


下一篇:为什么要显示java.lang.ClassCastException:android.text.SpannableString不能强制转换为java.lang.String?