PyGtk剪贴板仅在python交互模式下工作

PyGtk剪贴板仅在python交互模式下工作,python,gtk,Python,Gtk,这是我的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)

这是我的
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
  • 我不能使用线程,因为这些是包
    threads
    gtk
    的问题
这些行为是:

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

  • 如果我运行
    python thisscript.py
    它就不起作用(函数
    f
    从未被调用)

  • 如果我运行
    cat thisscript.py | python
    它将不工作(函数
    f
    从未被调用)


怎么会这样?(我如何修复它呢?

您没有运行一个油嘴滑舌的主循环:如果您这样做,许多基于GObject的东西可能会被破坏。尝试以下操作,而不是使用睡眠循环:

gtk.mainloop()