0

这是我Python在剪贴板中查看数据的脚本:

import gtk
import time

clipboard = gtk.clipboard_get()
print  clipboard.wait_for_targets()
def f(clipboard,selection,user_data):   print selection.data

clipboard.request_contents('STRING', f)

while True:
    time.sleep(1)

注意:

  • 最后我使用了time.sleep(1),让Python有时间调用回调函数f
  • 我不能使用线程,因为这些是包threadsgtk.

行为是:

  • 如果我运行python并复制此文本,它就可以工作。

  • 如果我运行python thisscript.py它不起作用(该函数f永远不会被调用)

  • 如果我运行cat thisscript.py | python它不起作用(该函数f永远不会被调用)

怎么会发生?(我该如何解决?)

4

1 回答 1

1

您没有运行 GLib 主循环:如果您这样做,许多基于 GObject 的东西可能会被破坏。试试这个而不是睡眠循环:

gtk.mainloop()
于 2013-09-20T16:44:05.843 回答