2012-01-27 23 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