Я ненавижу, что не существует «глобального» способа программно отключить клавиатуру без использования вызовов частного API. Зачастую мне нужно программно отключать клавиатуру, не зная, какой объект является первым респондентом. Я прибег к проверке self
с помощью API-интерфейса Objective-C, перечисляя все его свойства, извлекая свойства типа UITextField
и отправляя им сообщение resignFirstResponder
.
Это не должно быть так сложно сделать ...
Я знаю, что вы не используете 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.'
Вы можете попробовать gtk.Clipboard из PyGTK . Я считаю, что это мультиплатформенный.
Это может быть одной из причин, по которой у вас проблемы с объектом PyQt QClipboard :
QClipboard QApplication.clipboard ()
Возвращает указатель на приложение глобальный буфер обмена.
Примечание: объект QApplication должен уже построены раньше доступ к буферу обмена.
Он указывает на буфер обмена приложения , а не на системный буфер обмена. Вам, вероятно, придется использовать что-то другое, кроме объекта QClipboard, для достижения вашей цели.
Изменить:
Приведенный выше вывод из процитированной документации неверен. Согласно фактической документации PyQt объекта QClipboard :
Класс QClipboard обеспечивает доступ к буферу обмена оконной системы.