Error tkinter al copiar contenido desde el portapapeles en Python

Estoy escribiendo un script en python que verificará el contenido del portapapeles y los imprimirá en la consola. El siguiente es el script que estoy usando.

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

Cuando lo ejecuto sin copiar ningún texto, aparece el siguiente error:

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

Entiendo que aparece ya que no hay contenidos en el portapapeles. Una vez después de copiar cualquier texto, el código funciona bien. Para superar el problema, reescribí el código de la siguiente manera:

 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) 

Escribí esto para poder iniciar el archivo al tener un texto de inicio en el portapapeles. Esto ayudará a detener el error. A pesar de que impidió que ocurriera el error, el código ahora imprime solo “Texto de Inicio” de manera repetida. Incluso después de copiar el contenido en el portapapeles, parece que no se imprimen.

¿Puedo obtener algunas sugerencias sobre cómo evitar el error y al mismo tiempo imprimir los valores cada vez que copie algo en el portapapeles?

No puede evitar el error ya que este es un comportamiento diseñado, pero puede manejar el error.

 import tkinter as tk ... try: selection = r.selection.get(selection="CLIPBOARD") except tk.TclError: selection = None ... 

Encontré el siguiente script y me ayudó a obtener lo que buscaba.

 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 

Continué con el bash, excepto el bloque con un genérico excepto. La sugerencia de @Bryan Oakley ayudó mucho.