Рейтинг:0

Событие смены владельца буфера обмена Gtk: определение того, являюсь ли я сменщиком

флаг cn
sil

Содержимое обычного буфера обмена ctrl-C ctrl-V в Gtk 3 в приложении Python 3 легко установить с помощью чего-то вроде

буфер обмена = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clipboard.set_text("Сработало!, -1)

Также легко отслеживать изменения в буфере обмена с помощью объекта Clipboard. смена владельца сигнал.

Тем не менее, я хотел бы игнорировать смена владельца в моем приложении, если это было мой приложение, которое установлен содержимое буфера обмена, и я не знаю, как это сделать. смена владельца сигнал проходит через владелец параметр, который указывает на Gdk.Window, но я никогда явно не создаю окно в своем приложении; Я предполагаю, что Gtk незаметно создает его для меня, потому что должно быть какое-то X-окно, чтобы владеть содержимым буфера обмена. Я могу получить идентификатор этого окна X, когда владелец буфера обмена меняется примерно так:

def clipboardChanged (буфер обмена, owner_change):
    print("Новый владелец", owner_change.owner.get_xid())

clipboard.connect('смена владельца', clipboardChanged)

Это новое окно владельца, очевидно, принадлежит моему приложению, но как мне заранее найти его xid? То есть: как я могу отличить от смена владельца сигнализируют о том, что новый владелец меня?

(Примечание: если я дважды устанавливаю содержимое буфера обмена, я получаю два смена владельца сигналы и owner_change.причина является НОВЫЙ ВЛАДЕЛЕЦ каждый раз, так что это ненадежно: в частности, НОВЫЙ ВЛАДЕЛЕЦ также отправляется за "тот же владелец установил его снова", а не только за "а разные владелец теперь владеет буфером обмена».)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.