Буфер обмена PyQt не копирует в системный буфер обмена

Я ненавижу, что не существует «глобального» способа программно отключить клавиатуру без использования вызовов частного API. Зачастую мне нужно программно отключать клавиатуру, не зная, какой объект является первым респондентом. Я прибег к проверке self с помощью API-интерфейса Objective-C, перечисляя все его свойства, извлекая свойства типа UITextField и отправляя им сообщение resignFirstResponder.

Это не должно быть так сложно сделать ...

9
задан hasen 2 July 2009 в 13:10
поделиться

2 ответа

Я знаю, что вы не используете Windows, но, возможно, это даст вам некоторые идеи ... Я использовал это в программе PyQt для копирования URL-адресов в буфер обмена:

import win32clipboard

s = 'copy this to the clipboard'
try:
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardText(s)
    win32clipboard.CloseClipboard()
except:
    print 'Could not copy clipboard data.'
4
ответ дан 4 December 2019 в 13:49
поделиться

Вы можете попробовать gtk.Clipboard из PyGTK . Я считаю, что это мультиплатформенный.

Это может быть одной из причин, по которой у вас проблемы с объектом PyQt QClipboard :

QClipboard QApplication.clipboard ()

Возвращает указатель на приложение глобальный буфер обмена.

Примечание: объект QApplication должен уже построены раньше доступ к буферу обмена.

Он указывает на буфер обмена приложения , а не на системный буфер обмена. Вам, вероятно, придется использовать что-то другое, кроме объекта QClipboard, для достижения вашей цели.

Изменить:

Приведенный выше вывод из процитированной документации неверен. Согласно фактической документации PyQt объекта QClipboard :

Класс QClipboard обеспечивает доступ к буферу обмена оконной системы.

0
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: