【问题标题】:python and gtk3 clipboard onChangepython和gtk3剪贴板onChange
【发布时间】:2012-11-24 10:03:58
【问题描述】:

使用 PyGTK 2,我可以附加一个在剪贴板内容更改时执行的函数。浏览 GTK3 的 python 绑定的文档,我找不到任何关于这种功能的描述。

谁能告诉我这方面的“最佳实践”吗?

编辑

使用 gtk2 可以实现以下工作:

import gtk

def test(*args):
  print "Clipboard changed"

clip = gtk.Clipboard()
clip.connect('owner-change',test)

采用 Gtk3 时

from gi.repository import Gtk, Gdk

def test(*args):
  print "Clipboard changed"

clip = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clip.Connect('owner-change',test)

Python 接受与信号的连接,但我的函数从未执行。

【问题讨论】:

  • PyGTK 中的信号是什么?我不知道。
  • 我可以使用信号'owner-change'。即使在 GTK3 中 clipboard.connect 也接受信号,但我附加的函数从未被调用。
  • 该信号的文档说当剪贴板选择的所有者发生变化时它会被触发。不是在内容更改时。如果您要依赖未记录的行为,那么您必须期望它会中断。
  • 我意识到这一点,这就是为什么我要求“最佳实践”来获得此功能。
  • 有趣的问题。 “所有者变更”显然是错误的信号,但我无法说出正确的解决方案是什么。

标签: python clipboard gtk3


【解决方案1】:
from gi.repository import Gtk, Gdk

def test(*args):
    print "Clipboard changed"

clip = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clip.connect('owner-change',test)
Gtk.main()

为我工作。

【讨论】:

  • 奇怪!它现在可以工作了,我的环境中一定有某种奇怪的设置。但是,'Owner-change' 信号是否用于此目的?
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 2011-04-19
相关资源
最近更新 更多