加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows上的Python 3.4中的Tkinter在退出时不会将内部剪贴板数据

发布时间:2020-12-14 04:06:12 所属栏目:Windows 来源:网络整理
导读:我使用以下代码将我的小脚本的结果放在剪贴板中. from tkinter import Tkr = Tk()r.withdraw()r.clipboard_clear()r.clipboard_append("Result") 它在Python 3.3.5及更早版本上运行良好.但是当我升级到Python 3.4时,它会收到空的剪贴板.我尝试了3.4.0,3.4.1
我使用以下代码将我的小脚本的结果放在剪贴板中.
from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append("Result")

它在Python 3.3.5及更早版本上运行良好.但是当我升级到Python 3.4时,它会收到空的剪贴板.我尝试了3.4.0,3.4.1和3.4.2并且都收到了一个结果(空剪贴板).如果我阻止脚本立即退出,在clipboard_append()之后添加input(),我看到该剪贴板包含正确的“Result”.

UPDATE1:

修改后的测试脚本显示问题不是时间问题:

from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append("Result")
input()
r.destroy()

如果我运行此脚本,请等待几秒钟,按Enter键,我会收到空??剪贴板.

如果我运行脚本,切换到任何其他窗口并按Ctrl V,我会收到“结果”,脚本退出后“结果”仍保留在剪贴板中.

我认为在tcl / tk 8.6中clipboard_clear()会影响系统剪贴板,但clipboard_append只会影响仅通过OS请求转移到系统剪贴板的内部tcl / tk剪贴板.看起来它是在Linux中完成的,没有系统剪贴板.

UPDATE2:

最后提到的剪贴板在Tk changelog中指的是2004年:

2004-05-03 (bug fix)[939389,822002,732662] Correctly post internal 
clipboard data to the Windows clipboard on exit. (hobbs)

似乎在2004年纠正的错误在10年后回到了我们身上.

我怀疑’结果’永远不会到达剪贴板,而不是被清除. Windows上的3.4附带tcl / tk 8.6而不是8.5.我怀疑这是不同的,这可能是一个时间问题.在追加工作后r.destroy?在退出python之前显式地破坏tk根通常是一个好主意.在我们开始这样做之前,我们遇到了测试套件的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读