wxPython Phoenix의 ScreenDC에 문제가 발생했습니다.ScreenDC, wxPython을 사용하는 여러 스크린 샷
내 도구는 일정 기간 동안 여러 개의 스크린 샷을 찍을 예정입니다. 그러나 ScreenDC를 사용하여 스크린 샷을 캡처하고 PNG에 저장하면 처음에만 제대로 작동합니다. 다음의 모든 시간은 첫 번째 이미지와 동일한 이미지를 저장합니다. 새로운 이미지를 얻으려면 필자의 경우 옵션이 아닌 프로그램을 다시 시작해야합니다. 나는 wx.ScreenDC()
라고 부를 때마다 처음으로 같은 이미지를 얻는다 고 생각합니다.
우분투 16.04, wxPython을 3.0.3 gtk3, 파이썬 3.6
내가 사용하는 코드 :
def take_screenshot():
screen = wx.ScreenDC()
size = screen.GetSize()
width = size[0]
height = size[1]
bmp = wx.Bitmap(width, height)
mem = wx.MemoryDC(bmp)
mem.Blit(0, 0, width, height, screen, 0, 0)
bmp.SaveFile(str(datetime.now()) + '.png', wx.BITMAP_TYPE_PNG)
if __name__ == '__main__':
app = wx.App()
take_screenshot()
sleep(3)
take_screenshot()
sleep(3)
take_screenshot()
sleep(3)
take_screenshot()
어쩌면 메모리에서 첫 번째 이미지를 청소하는 방법이있다.
유일한 해결책은 별도의 프로세스를 실행하고 wx.App를 정의한 다음 함수를 수행하는 것입니다. 그러나 그것은 내 프로그램을위한 선택 사항이 아닙니다.
감사합니다.
UPD : wxPython Phoenix의 문제 일 것 같습니다. 이것을 wxPython Classic에서 실행하면 모든 것이 정상적으로 작동합니다 (비트 맵이 아닌 EmptyBitmap 만 사용). 이상한, 나는 그들의 저장소 에서이 문제를보고합니다.
내가) (수면없이 작업 시도에 [Github에서 (https://github.com/wxWidgets/Phoenix/issues/259) – nepix32