代码之家  ›  专栏  ›  技术社区  ›  BPS

如何在GTK中的进程之间共享剪贴板数据?

  •  0
  • BPS  · 技术社区  · 7 年前

    我想:

    1. 将一些文本放入剪贴板

    #!/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 在那之后,我想用 python2 ./test.py get .

    为什么剪贴板。wait_for_text()总是返回None?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Siva Guru    7 年前

    您必须进入主循环才能让剪贴板管理器获取文本( Effect of PyGTK clipboard set_text persists only while process is running

    #!/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()  
    
        2
  •  0
  •   bitinerant    6 年前

    对于GTK3:

    #!/usr/bin/env python3
    
    import gi
    gi.require_version("Gtk", "3.0")
    from gi.repository import Gtk, Gdk
    
    class CopyToClipboard(Gtk.Window):
        def __init__(self, text):
            super(CopyToClipboard, self).__init__()
            clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
            clipboard.set_text(text, -1)
            clipboard.store()
    
    CopyToClipboard("your text goes here\n")