当前位置:   article > 正文

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

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.罗达斯的代码有用。它似乎多线程导致问题。很深原因不明。在

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/892385
推荐阅读
相关标签
  

闽ICP备14008679号