在Windows 7上运行Python 3.4。
我需要将存储在剪贴板中的内容复制到我的python程序中的变量中。我在Stack Overflow上看过,可以用pywin32或tkinter完成。由于tkinter是python标准库的一部分,我认为这是两者中较好的,因为用户不必安装外部模块。这是在tkinter中获取剪贴板数据的代码:
import tkinter
number = tkinter.Tk().clipboard_get()
除了每次执行时弹出一个空白的tkinter窗口外,这个工作正常。
1)为什么会这样?通常tkinter在tk()。mainloop()运行之前不会显示任何内容。
2)有没有办法避免弹出这个窗口?如果没有,我猜我只会使用pywin32
答案 0 :(得分:12)
除了每次执行时都弹出一个空白的tkinter窗口,这个工作正常。
您可以隐藏此窗口:
from tkinter import Tk
root = Tk()
root.withdraw()
number = root.clipboard_get()
答案 1 :(得分:2)
答案 2 :(得分:1)
这是一个基于this answer的Python函数,它使用 Tkinter 替换/返回剪贴板文本,这是一个内置的Python模块,没有显示窗口。
def use_clipboard(paste_text=None):
import tkinter # For Python 2, replace with "import Tkinter as tkinter".
tk = tkinter.Tk()
tk.withdraw()
if type(paste_text) == str: # Set clipboard text.
tk.clipboard_clear()
tk.clipboard_append(paste_text)
try:
clipboard_text = tk.clipboard_get()
except tkinter.TclError:
clipboard_text = ''
r.update() # Stops a few errors (clipboard text unchanged, command line program unresponsive, window not destroyed).
tk.destroy()
return clipboard_text
使用这种基于Tkinter的方法的一个小缺点是它使用了一个不太理想的快速隐藏窗口,但这不应该是明显的。
此答案使用Stack Overflow问题How to copy/get an image in the clipboard with Python (I accept Tkinter for text)上原始答案中的内容。
答案 3 :(得分:1)
我遇到了同样的问题。这对我在Windows 7,python 2.7上工作。我现在只有一个窗口。
from Tkinter import *
root = Tk()
cliptext = root.clipboard_get()
lab=Label(root, text = cliptext)
lab.pack()
root.mainloop()
答案 4 :(得分:1)
AnnoyingWindow = Tk()
ClipBoard = AnnoyingWindow.clipboard_get()
AnnoyingWindow.destroy()
print(ClipBoard)
答案 5 :(得分:0)
您实际上是在没有tkinter
的情况下以更简单的方式执行此操作:
import pyperclip
clipboard_content = pyperclip.paste()
答案 6 :(得分:0)
没有窗口的tkinter方式:
from tkinter import Tk
def clipboard_get():
r = Tk()
r.withdraw()
return r.clipboard_get()
答案 7 :(得分:-1)
number.withdraw() #this hides the ui for the object
只需在创建TKinter对象时在开头添加此命令,它将隐藏UI。请参阅this类似问题。