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