通过D-Bus获取剪贴板更改通知

时间:2014-01-24 15:15:53

标签: python gtk pygtk kde

有没有办法通过D-Bus通知KDE / GNOME中的剪贴板更改?如何捕获/窃听/订阅剪贴板选择(特别是在PyGTK中)?我有gtk.Clipboard.wait_for_text()方法可用,但它会立即返回剪贴板内容,而我只需要在剪贴板更改时调用它。

1 个答案:

答案 0 :(得分:3)

在这里得到的很多:python and gtk3 clipboard onChange

问题的核心是:

self.clipboard = gtk.Clipboard()
self.clipboard.connect("owner-change", self.renderText)

这个owner-change信号来自我的黑魔法或者如何找到导致特定事件的信号(被理解为gui现象),但它有效:

#!/usr/bin/env python

import gtk, glib

class ClipboardParse:
    def __init__(self):
        window = gtk.Window()
        window.set_title("example")
        window.resize(600,400)
        box = gtk.HBox(homogeneous = True, spacing = 2)
        self.buf = gtk.TextBuffer()
        textInput = gtk.TextView(self.buf)
        self.lbl = gtk.Label()
        box.add(self.lbl)
        window.add(box)
        window.connect("destroy", gtk.main_quit)
        window.show_all()
        self.clipboard = gtk.Clipboard()
        self.clipboard.connect("owner-change", self.renderText)

    def renderText(self, clipboard, event):
        print 'C {0} | E {1}'.format(clipboard, event)
        txt = self.clipboard.wait_for_text()
        self.lbl.set_text(txt)
        print txt
        return False

if __name__ == '__main__':
    ClipboardParse()
    gtk.main()
相关问题