擅长:python、mysql、java
<p>我认为多线程不是适合您的最佳方法,<code>after</code>可能已经足够了。您可以使用较低的超时调用<code>tk.after</code>,而不是繁忙的等待循环。然后您只需要将<code>watch_clipboard</code>的逻辑移动到类中,这样就不必担心线程之间的通信了。在</p>
<pre><code>class GUI:
def __init__(self):
self.tk = Tk()
self.tk.resizable(0, 0)
self.tk.title('watch clipboard')
self.last_content = ''
self.tk.after(100, self.watch_clipboard)
self.tk.mainloop()
def watch_clipboard(self):
try:
content = self.tk.clipboard_get()
if content != self.last_content and content.startswith('http:'):
self.last_content = content
self.tk.clipboard_clear()
messagebox.askokcancel('', 'add this in?', default='ok')
except TclError:
pass
self.tk.after(100, self.watch_clipboard)
</code></pre>