wxPythonでのクリップボードサンプル

Last-modified: 2014-08-16 (土) 12:41:50 (2120d)

pythonでクリップボードを操作する場合、ctypesモジュールでwin32apiを直接叩く方法がある ( http://www.python.jp/pipermail/python-ml-jp/2007-October/004140.html ) が、wxPythonを使っている場合はctypesを使わずにコンパクトに書ける。

※ Windows でしかチェックしていない

クリップボードから文字列を取得

#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

if __name__ == '__main__':
	app = wx.App(0)
	do = wx.TextDataObject()
	cb = wx.Clipboard()
	cb.Open()
	cb.GetData(do)
	cb.Close()
	wx.MessageBox(do.GetText(),"Clipboard")

クリップボードに文字列をセット

#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

if __name__ == '__main__':
	app = wx.App(0)
	text=wx.GetTextFromUser("Text set to Clipboard.","Clipboard","Input text here")
	do = wx.TextDataObject()
	do.SetText(text)
	cb = wx.Clipboard()
	cb.Open()
	cb.SetData(do)
	cb.Flush()
	cb.Close()
  • Flush()したらうまくいった
  • 日本語も扱えた
  • Open()/Close()はしなくても動作してるっぽいが、一応礼儀として。
  • ctypesでWindowsAPIを叩く場合、64ビット版Vistaだとそのままだと動かなかった。