在Windows 10中使用tkinter从Python 3.4复制到剪贴板会导致在尝试粘贴时崩溃

时间:2018-08-19 20:02:47

标签: python tkinter windows-10 clipboard python-3.4

我尝试了多种不同的方法,并在此处搜索了该主题,但是找不到解决方案。代码运行正常,但是当我尝试将复制的内容粘贴到剪贴板时,我粘贴的程序将停止响应。关闭Python应用程序后,程序会再次开始响应,但是剪贴板为空。这是用于学校作业,它只需要我使用Python安装随附的工具,而无需使用Pyperclip之类的工具。

这是我正在使用的代码:

from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('This is a test to try to copy to clipboard')
r.update()
r.destroy()

4 个答案:

答案 0 :(得分:1)

谢谢大家,经过大量的额外搜索,我能够找到所需的答案。我发现的解决方案是使用import os并将文本添加到| clip shell命令中。

我最初担心这是不安全的,因为用户可以输入一个shell命令作为要复制到剪贴板的文本,但是我意识到,由于这是一个计算器程序,因此它应该具有输入验证功能以不接受任何非-无论如何,通过数字输入即可解决该问题。

这是我在程序中最终使用的功能:

def clipboard(text):
    cmd = 'echo | set /p nul=' + str(text) + '| clip'
    os.system(cmd)

答案 1 :(得分:0)

使用剪贴板方法内置的tkinters不能执行此操作。 Tkinter需要保持活动状态,以便剪贴板保留内容。如果您在与添加剪贴板相同的循环中关闭实例,则最终会丢失剪贴板中的内容。至少这是Tkinters内​​置方法的行为。

您可以pip install clipboard并使用其方法。即使Tkinter关闭,这也将内容保留在剪贴板上。

from tkinter import Tk
import clipboard as cb


r = Tk()
r.withdraw()
cb.copy('This is a test to try to copy to clipboard')
r.destroy()

答案 2 :(得分:0)

尝试使用pyperclip例如

import pyperclip 
pyperclip.copy(“hello”)
#copies hello into the clipboard 

查看官方的pyperclip文档,网址为 https://pyperclip.readthedocs.io/en/latest/introduction.html

答案 3 :(得分:-1)

UInt32 retcode = 
    processClass.InvokeMethod(
    "Create", methodArgs);

UInt32 pid = methodArgs[3];