使用wxPython从剪贴板读取图像

2 投票
2 回答
1753 浏览
提问于 2025-04-15 21:32

我该怎么从剪贴板读取一张图片呢?我可以用 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窗口,这样就会把复制的图片显示在里面。

撰写回答