Чтение изображения из буфера обмена с помощью wxPython

Как я могу прочитать изображение из буфера обмена? Я могу читать текст из буфера обмена, используя wx.Clipboard, но не изображения.

Можно ли читать изображения с wx.Clipboard? Если нет, то есть ли другой способ?

Я использую Python 2.5 и 64-разрядную версию Windows Vista.


person Moayyad Yaghi    schedule 13.04.2010    source источник
comment
Я понятия не имею, почему этот вопрос закрыт!?   -  person Moayyad Yaghi    schedule 23.08.2012


Ответы (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, что затем заставляет скопированное изображение рисоваться внутри него.

person tom10    schedule 13.04.2010
comment
+1, я использую его для своего приложения, которое работает как в Windows, так и в OSX. - person Anurag Uniyal; 14.04.2010

В библиотеке изображений Python есть модуль ImageGrab, который может сделать именно это. Это работает только на окнах.

person KillianDS    schedule 13.04.2010