2013-11-04 60 views
1

我無法在IDE中使用兩次腳本,我猜這是因爲內存未被釋放。我試圖做一些事情,但我真的不知道該如何釋放它。如何在python中釋放內存wx.MemoryDC

import wx 
import win32gui 
from ctypes import windll 

hwnd = win32gui.FindWindow(None, 'Steam') 

# Window_FromHWND appears in wxPython 2.6.2.1+ 
def getScreenshot(): 
    window = wx.Window_FromHWND(None, hwnd) 

    src_dc = wx.WindowDC(window) 
    width, height = window.GetSize() 

    mem_dc = wx.MemoryDC() 
    bitmap = wx.EmptyBitmap(width, height) 
    mem_dc.SelectObject(bitmap) 

    windll.user32.PrintWindow(hwnd, mem_dc.GetHDC() , 0) 

    mem_dc.SelectObject(wx.NullBitmap) 

    mem_dc.Clear() 
    src_dc.Clear() 
    window.Destroy() 
    mem_dc.Destroy() 
    src_dc.Destroy() 

    return bitmap.ConvertToImage() 

app = wx.App(redirect=False) 

image = getScreenshot() 
filename = "testsnap.png" 
image.SaveFile(filename, wx.BITMAP_TYPE_PNG) 
image.Destroy() 

app.MainLoop() 
+0

你真的不應該需要在Python中進行內存管理。我認爲你所有的clear()和destroy()調用都是多餘的(也可能是危險的)。 –

+0

實際上它可能是因爲你的文件在某個地方打開了...是什麼讓你認爲這個問題與內存有關? –

+0

您正在啓動應用程序主循環並且永不退出它! –

回答

0

你並不需要調用app.MainLoop()可言,因爲你的程序應該是你救了你的形象,儘快退出。