使用wxPython从剪贴板读取图像
我该怎么从剪贴板读取一张图片呢?我可以用 wx.Clipboard
从剪贴板读取文本,但就是无法读取图片。
用 wx.Clipboard
能读取图片吗?如果不能,还有别的方法吗?
我现在用的是 Python 2.5 和 64 位的 Windows Vista。
2 个回答
0
Python图像库里有一个叫做ImageGrab的模块,可以实现这个功能。这个模块只在Windows系统上有效。
2
以下内容对我有效(在Mac OSX上测试过)
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'test frame',size=(790, 524))
self.Bind(wx.EVT_LEFT_DOWN, self.OnClick)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.clip = wx.Clipboard()
self.x = wx.BitmapDataObject()
self.bmp = None
def OnClick(self, evt):
self.clip.Open()
self.clip.GetData(self.x)
self.clip.Close()
self.bmp = self.x.GetBitmap()
self.Refresh()
def OnPaint(self, evt):
if self.bmp:
dc = wx.PaintDC(self)
dc.DrawBitmap(self.bmp, 20, 20, True)
if __name__ == '__main__':
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()
使用这个方法时,我先运行它,当窗口出现后,我用另一个程序复制一张图片,然后点击这个wx窗口,这样就会把复制的图片显示在里面。