python - 如何在 GTK 中的进程之间共享剪贴板数据?
问题描述
我想要:
- 将一些文本放入剪贴板
- 结束我的程序
- 将数据粘贴到其他应用程序
但我的代码不起作用:
#!/usr/bin/env python
import sys
import gtk
if __name__ == '__main__':
if sys.argv[1] == 'put':
clipboard = gtk.clipboard_get()
clipboard.set_text('It\'s working')
clipboard.store()
elif sys.argv[1] == 'get':
clipboard = gtk.clipboard_get()
text = clipboard.wait_for_text()
print('Text from clipboard: ', text)
我通过执行将文本放入剪贴板,python2 ./test.py put
然后我想从剪贴板获取 ext python2 ./test.py get
。
为什么 clipboard.wait_for_text() 总是返回 None?
解决方案
您必须进入主循环才能让剪贴板管理器获取文本(PyGTK 剪贴板 set_text 的效果仅在进程运行时持续存在)
#!/usr/bin/env python
import sys
import gtk, gobject
if __name__ == '__main__':
if sys.argv[1] == 'put':
clipboard = gtk.clipboard_get()
clipboard.set_text('It\'s working')
clipboard.store()
elif sys.argv[1] == 'get':
clipboard = gtk.clipboard_get()
text = clipboard.wait_for_text()
if text == None:
print("empty text")
else:
print('Text from clipboard: ', text)
gobject.timeout_add(100, gtk.main_quit)
gtk.main()
推荐阅读
- c++ - 使用通过成员指针访问的互斥锁来控制对该类的线程访问
- django - 通过 s3 在 Django 中提供 csv 文件时,每行后面都有额外的行
- amazon-web-services - AWS S3-拒绝上传非加密对象
- firebase - Flutter 实时 Firebase CRUD 通知
- ios - 如何使用 Google Nearby Connections API 在范围内的 iOS 和 Android 设备之间连接和传输数据?
- css - 带有 CSS 的选项卡仅使用包含在目标 id 中的复选框 id
- c++ - 函数类型参数的模板参数推导
- bash - 如何使用 bash 将一行的最后一个 [0-9]{1,9} 单元格值移动到最后一行(.csv)
- java - 错误:不兼容的类型:推断的类型不符合推断的上限:INT#1 上限:
- tensorflow - TensorFlow SparseCategoricalCrossentropy 是如何工作的?