Python tkinter 无法使用空剪贴板
Python tkinter not working with empty clipboard
这是我获取剪贴板文本的代码:
from tkinter import Tk
def check_clipboard():
r = Tk()
r.withdraw()
result = r.selection_get(selection="CLIPBOARD")
return result
但是有个问题。如果 clipboard
为空,则脚本不是 运行。错误是这样的:
Traceback (most recent call last):
File "C:\Users\Mustafa\PycharmProjects\pythonProject\youtube\MyScript.py", line 15, in <module>
result0 = r0.selection_get(selection="CLIPBOARD")
File "C:\Users\Mustafa\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 970, in selection_get
return self.tk.call(('selection', 'get') + self._options(kw))
_tkinter.TclError: CLIPBOARD selection doesn't exist or form "STRING" not defined
我试过了,但我没有弄清楚这个错误。我尝试用 r.clipboard_append("hello")
附加一些字符串,但它再次不起作用。我该如何解决这个问题?添加一些字符串或检查剪贴板是否为空。
当剪贴板为空时,出现TclError
,你确实需要try/catch
它:
可能是这样的:
import tkinter as tk
from tkinter import TclError
def check_clipboard():
root.withdraw()
try:
result = root.selection_get(selection="CLIPBOARD")
except TclError:
# handle the error the way you see fit.
result = 'the clipboard was empty'
return result
root = tk.Tk()
print(check_clipboard())
要清除剪贴板,请使用root.clipboard_clear()
没有选项可以检查剪贴板是否为空,但是一个小函数可以做到这一点:
def is_clipboard_empty():
try:
root.selection_get(selection="CLIPBOARD")
except TclError: # error raised when empty
return True
return False
您可以在行 r.selection_get(...)
上应用 try/except
来捕获异常,如下所示:
import tkinter as tk
def check_clipboard():
r = tk.Tk()
r.withdraw()
try:
return r.selection_get(selection="CLIPBOARD")
#return r.clipboard_get()
except tk.TclError:
return None
finally:
r.destroy()
注1:可以使用r.clipboard_get()
,与r.selection_get(selection="CLIPBOARD")
相同。
注意 2:我添加了 finally
块,以防您不想在函数后使用 Tk()
的实例。否则,删除 finally
块。
这是我获取剪贴板文本的代码:
from tkinter import Tk
def check_clipboard():
r = Tk()
r.withdraw()
result = r.selection_get(selection="CLIPBOARD")
return result
但是有个问题。如果 clipboard
为空,则脚本不是 运行。错误是这样的:
Traceback (most recent call last):
File "C:\Users\Mustafa\PycharmProjects\pythonProject\youtube\MyScript.py", line 15, in <module>
result0 = r0.selection_get(selection="CLIPBOARD")
File "C:\Users\Mustafa\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 970, in selection_get
return self.tk.call(('selection', 'get') + self._options(kw))
_tkinter.TclError: CLIPBOARD selection doesn't exist or form "STRING" not defined
我试过了,但我没有弄清楚这个错误。我尝试用 r.clipboard_append("hello")
附加一些字符串,但它再次不起作用。我该如何解决这个问题?添加一些字符串或检查剪贴板是否为空。
当剪贴板为空时,出现TclError
,你确实需要try/catch
它:
可能是这样的:
import tkinter as tk
from tkinter import TclError
def check_clipboard():
root.withdraw()
try:
result = root.selection_get(selection="CLIPBOARD")
except TclError:
# handle the error the way you see fit.
result = 'the clipboard was empty'
return result
root = tk.Tk()
print(check_clipboard())
要清除剪贴板,请使用root.clipboard_clear()
没有选项可以检查剪贴板是否为空,但是一个小函数可以做到这一点:
def is_clipboard_empty():
try:
root.selection_get(selection="CLIPBOARD")
except TclError: # error raised when empty
return True
return False
您可以在行 r.selection_get(...)
上应用 try/except
来捕获异常,如下所示:
import tkinter as tk
def check_clipboard():
r = tk.Tk()
r.withdraw()
try:
return r.selection_get(selection="CLIPBOARD")
#return r.clipboard_get()
except tk.TclError:
return None
finally:
r.destroy()
注1:可以使用r.clipboard_get()
,与r.selection_get(selection="CLIPBOARD")
相同。
注意 2:我添加了 finally
块,以防您不想在函数后使用 Tk()
的实例。否则,删除 finally
块。