如何使用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()
1 个回答
4
我在工作中,暂时无法测试这个答案里的代码,不过这至少能给你指个方向。
我猜问题在于你无法把两个回调函数结合在一起。
有两个解决办法我能想到。
1) 使用一个全局变量来存储剪贴板数据,然后在键绑定的回调函数中读取这个数据。
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()