Python中文
首页
教程
问答
标签
搜索
登录
注册
使用tkinter监控剪贴板,我的代码有什么问题?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>关于代码的一些描述:</p> <ol> <li>这是我程序的一部分,我只把相关的行放在这里</li> <li>我希望这些代码能做的,就是监视剪贴板。如果我收到“<strong>http:xxx</strong>“在我的剪贴板上,它显示一个弹出窗口窗口。如果剪贴板的内容不变,窗口将不再显示</li> <li>运行时,它可以正常弹出一次窗口,但当我从<strong>开始将另一个字符串复制到剪贴板时,它不会再次弹出窗口</li> <li>我在<code>after</code>方法中尝试了一些不同的间隔值,结果相同。在</li> </ol> <p>代码:</p> <pre><code>from tkinter import * import os import tkinter.messagebox as messagebox import threading import re def watch_clipboard(tk,pipeout): content = '' last_content = '' while True: try: content = tk.clipboard_get() except TclError: pass result = re.match('http:',content) if content != last_content: if result: last_content = content message = 'show'.encode() os.write(pipeout,message) class GUI: def __init__(self): self.tk = Tk() self.tk.resizable(0, 0) self.tk.title('watch clipboard') pipein,pipeout = os.pipe() threading.Thread(target=watch_clipboard,daemon=True,args=(self.tk,pipeout)).start() self.tk.after(5000,lambda:self.clipboard_confirm(pipein)) self.tk.mainloop() def clipboard_confirm(self,pipein): message = os.read(pipein,16) if message == b'show': self.tk.clipboard_clear() messagebox.askokcancel('', 'add this in?', default='ok') self.tk.after(5000,clipboard_confirm(pipein)) #add this if __name__ == '__main__': gui = GUI() </code></pre> <p>在编辑:A.罗达斯的代码有用。它似乎多线程导致问题。很深原因不明。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>@laike9m<br/> 你的代码的错误是os.管道使用。<br/> 操作系统读取()是一个阻塞函数,它将接收操作系统读取()阻塞一次<code>clipboard_confirm</code>运行。导致用户界面卡住。<br/> 此错误与<code>after</code>和多线程无关。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
1 回答
无法使用Django\u mssql\u后端迁移到外部hos
6 回答
无法使用Django&Python3.4连接到MySql
2 回答
无法使用Django+nginx上载媒体文件
3 回答
无法使用Django1.6导入名称模式
6 回答
无法使用Django1.7和mongodb登录管理站点
4 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
1 回答
无法使用Djangockedi验证CBV中的字段
3 回答
无法使用Djangocketditor上载图像(错误400)
8 回答
无法使用Djangocron进行函数调用
4 回答
无法使用Djangofiler djang上载文件
10 回答
无法使用Djangokronos
7 回答
无法使用Djangomssql provid
9 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
2 回答
无法使用Djangomssq迁移Django数据库
7 回答
无法使用Djangonox创建用户
1 回答
无法使用Djangopyodb从Django查询SQL Server
5 回答
无法使用Djangopython3ldap连接到ldap
3 回答
无法使用Djangoredis连接到redis
6 回答
无法使用Django中的FK创建新表
3 回答