我有两个代码示例。第一个是获取当前剪贴板内容并打印它,第二个是使用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()
答案 0 :(得分: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()