使用tkinter从剪贴板复制而不显示窗口
我在Windows 7上运行Python 3.4。
我需要把剪贴板里的内容复制到我Python程序中的一个变量里。我在Stack Overflow上看到,可以用pywin32
或者tkinter
来实现这个功能。因为tkinter
是Python自带的库,所以我觉得用它更好,这样用户就不用安装额外的模块了。下面是用tkinter
获取剪贴板数据的代码:
import tkinter
number = tkinter.Tk().clipboard_get()
这个方法很好用,但每次执行时都会弹出一个空的tkinter
窗口。
这是为什么呢?通常情况下,
tkinter
在运行tk().mainloop()
之前是不会显示任何东西的。有没有办法避免这个窗口弹出来?如果没有的话,我想我就只能用
pywin32
了。
9 个回答
我也遇到过同样的问题。在Windows 7和Python 2.7上,这个方法对我有效。现在我只会看到一个窗口。
from Tkinter import *
root = Tk()
cliptext = root.clipboard_get()
lab=Label(root, text = cliptext)
lab.pack()
root.mainloop()
当然可以!请看下面的内容:
在编程中,有时候我们需要让程序做一些事情,比如读取文件、处理数据或者与用户互动。这些操作通常是通过一些特定的指令来实现的。比如,读取文件的指令可以告诉程序去找一个文件,然后把里面的内容拿出来。
此外,程序还可以通过条件判断来决定下一步该做什么。比如,如果用户输入的是正确的密码,程序就可以让用户进入系统;如果输入错误,程序就会提示用户再试一次。
总之,编程就像是在给计算机下指令,让它按照我们的想法去做事情。希望这些解释能帮助你更好地理解编程的基本概念!
AnnoyingWindow = Tk()
ClipBoard = AnnoyingWindow.clipboard_get()
AnnoyingWindow.destroy()
print(ClipBoard)
这里有一个基于 这个答案 的Python函数,它使用内置的Python模块 Tkinter 来替换或返回剪贴板上的文本,而且不会显示窗口。
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问题中原始答案的内容,问题是 如何用Python复制/获取剪贴板中的图像(我接受使用Tkinter处理文本)。
这个方法运行得很好,但每次执行时都会弹出一个空白的 tkinter 窗口。
你可以把这个窗口隐藏起来:
from tkinter import Tk
root = Tk()
root.withdraw()
number = root.clipboard_get()