2012-01-27 11 views
2

2つのコードサンプルがあります。最初のものは現在のクリップボードの内容を取得して印刷し、もう1つはpython-keybinderを使ってホットキーを押します。私はそれらの2つを一緒に組み合わせることに固執しています。私は、クリップボードの内容をホットキー印刷機に印刷したい(すなわち、テキスト選択を行い、ホットキーを押し、この選択が印刷される)。ここに私のコードは次のとおりです。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

を少なくとも正しい方向に向けるべきです。

問題は、2つのコールバックを組み合わせることができないと仮定します。 私が考えることができる2つの解決策があります。

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

両方のコードサンプルが機能します。どうもありがとう! –

関連する問題