繁体   English   中英

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

[英]tkinter error when copying contents from clipboard in Python

我正在编写一个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
...

我遇到了以下脚本,它帮助我获得了目标。

import time
from tkinter import Tk

while True:
    r = Tk()
    try:
        result = r.selection_get(selection="CLIPBOARD")
        print(result)
        time.sleep(1)
    except:
        selection = None

我继续尝试try块,并使用通用的except。 @Bryan Oakley的建议很有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM