2012-01-27 79 views
2

我有两个代码示例。第一个是获取当前剪贴板内容并打印它,第二个是使用python-keybinder在热键按下时执行一些操作。我坚持将这两者结合在一起。我希望我的剪贴板内容能够在热键按下时打印出来(即我做文本选择,按热键并打印此选项)。这里是我的代码:如何使用python-keybinder获取剪贴板内容

要获取的选择:

import gtk 

def _clipboard_changed(clipboard, event): 
    text = clipboard.wait_for_text() 
    print text 

gtk.clipboard_get(gtk.gdk.SELECTION_PRIMARY).connect("owner-change", _clipboard_changed) 

gtk.main() 

要热键绑定:

import gtk 
import keybinder 

def callback(): 
    print "pressed" 
    gtk.main_quit() 

if __name__ == '__main__': 
    keystr = "<Ctrl>A" 
    keybinder.bind(keystr, callback) 
    gtk.main() 

回答

4

正如一个警告,我在工作中,目前无法在这个答案对代码进行测试但它至少应该指向正确的方向。

我认为问题是你不能合并这两个回调。 我能想到两种解决方案。

1)使用一个全球存储剪贴板数据并从中读取keybinder回调

import gtk 
    import keybinder 

    cbText = "" 

    def keybinder_callback(): 
     print cbText 
     gtk.main_quit() 

    def _clipboard_changed(clipboard, event): 
     global cbText 
     cbText = clipboard.wait_for_text() 

    gtk.clipboard_get(gtk.gdk.SELECTION_PRIMARY).connect("owner-change", _clipboard_changed) 

    if __name__ == '__main__': 
     keystr = "<Ctrl>A" 
     keybinder.bind(keystr, keybinder_callback) 
     gtk.main() 

2)摆脱了第一个回调。

import gtk 
    import keybinder 

    def callback(): 
     print "pressed" 
     clipboard = gtk.clipboard_get() 
     text = clipboard.wait_for_text() 
     print text 
     gtk.main_quit() 

    if __name__ == '__main__': 
     keystr = "<Ctrl>A" 
     keybinder.bind(keystr, callback) 
     gtk.main() 
+0

您的两个代码示例都可以使用!非常感谢! – 2012-02-29 11:35:24