python监听剪贴板_用tkinter监视剪贴板,我的代码有什么问题?

关于代码的一些描述:这是我程序的一部分,我只把相关的行放在这里

我希望这些代码能做的,就是监视剪贴板。如果我收到“http:xxx“在我的剪贴板上,它显示一个弹出窗口窗口。如果剪贴板的内容不变,窗口将不再显示

运行时,它可以正常弹出一次窗口,但当我从开始将另一个字符串复制到剪贴板时,它不会再次弹出窗口

我在after方法中尝试了一些不同的间隔值,结果相同。在

代码: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()

在编辑:A.罗达斯的代码有用。它似乎多线程导致问题。很深原因不明。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值