python3,tkinter关于剪贴板事件绑定的问题。

notback 2018-02-22 08:45:20
最近在写个小工具,主要目的,当复制一串字符串后,判断是否符合mac规则,符合的话,查表给出mac对应的机器名称(tk置顶一个小窗口,查出来,窗口显示。查不出,窗口显示个entry,让输入名称,然后按按钮记录下来。)。
再问问题前,先给点研究出的福利吧。
如果只获取字符串类型类容。有2种方法比较常用。
方法一:
第三方模块pyperclip
直接命令行下, python -m pip install pyperclip即可。

方法二:
不用第三方模块,直接使用python3内置模块tkinter

import tkinter as tk

r=tk.Tk()
r.withdraw() #隐藏窗口
st=r.clipboard_get() #获取剪贴板内容
print("str=", st)
r.clipboard_clear() #清除剪贴板内容
r.clipboard_append("xxooxx") #向剪贴板追加内容
r.destroy()

网上代码一般如此写的,但是有不少坑。
1 如果剪贴板内无字符串内容,python会报错
2 上面代码是无法把xxooxx复制入系统剪贴板的。

因为已经安装了pyperclip,也就没有深入研究tkinter的clipboard了。等以后有空再研究,毕竟,不用第三方库还是很有吸引力的。

========================漂亮的分隔符====================================
问题:
剪贴板事件监听
查了tkinter的blind,貌似没有剪贴板的事件监听,甚至焦点不在tk窗口,连事件都不响应。
查到tkinter有个protocol也可以绑定事件,但是查了ICCCM,貌似也没有剪贴板事件
查了C++,win32有个ON_WM_CLIPBOARDUPDATE 消息。
也就是说,可以监听剪贴板变更情况。

tkinter能翻的资料我翻遍了,有限的英文水平,已经没有办法深入了。貌似现在无解。

目前猜测,是否可以通过pwin32来监听剪贴板消息?

所以,大致分2个解决方向:
1、tkinter高手,可否告知,tkinter是否有办法监听并绑定剪贴板事件?(time.sleep轮询太占资源,并且也不够准确,暂时不考虑。)tkinter是否可响应外部事件?

2、pwin32高手,可否告知如何让tkinter绑定剪贴板变更事件?

3、其他python高手,可否有更好的主意。

...全文
2722 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
notback 2018-02-23
  • 打赏
  • 举报
回复
。。。。这里还是没人啊
notback 2018-02-23
  • 打赏
  • 举报
回复
自顶求解,人气不旺啊
notback 2018-02-23
  • 打赏
  • 举报
回复
anybody home ? 自顶求解~~~

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧