首页 > 解决方案 > 如何在 GTK 中的进程之间共享剪贴板数据?

问题描述

我想要:

  1. 将一些文本放入剪贴板
  2. 结束我的程序
  3. 将数据粘贴到其他应用程序

但我的代码不起作用:

#!/usr/bin/env python

import sys
import gtk

if __name__ == '__main__':
    if sys.argv[1] == 'put':
        clipboard = gtk.clipboard_get()
        clipboard.set_text('It\'s working')
        clipboard.store()
    elif sys.argv[1] == 'get':
        clipboard = gtk.clipboard_get()
        text = clipboard.wait_for_text()
        print('Text from clipboard: ', text)

我通过执行将文本放入剪贴板,python2 ./test.py put然后我想从剪贴板获取 ext python2 ./test.py get

为什么 clipboard.wait_for_text() 总是返回 None?

标签: pythonpygtk

解决方案


您必须进入主循环才能让剪贴板管理器获取文本(PyGTK 剪贴板 set_text 的效果仅在进程运行时持续存在

#!/usr/bin/env python

import sys
import gtk, gobject


if __name__ == '__main__':
    if sys.argv[1] == 'put':
        clipboard = gtk.clipboard_get()
        clipboard.set_text('It\'s working')
        clipboard.store()
    elif sys.argv[1] == 'get':
        clipboard = gtk.clipboard_get()
        text = clipboard.wait_for_text()
        if text == None:
            print("empty text")
        else:
            print('Text from clipboard: ', text)
gobject.timeout_add(100, gtk.main_quit)
gtk.main()  

推荐阅读