2013-07-24 5 views
0

Iv'e는 최근에 파이썬 프로그래밍을 배우기 시작했고 첫 번째 프로그램에서 몇 가지 문제가 발생했습니다. 인쇄 화면을 자동 저장하는 프로그램입니다.파이썬 자동 저장 printscreen

인쇄 화면을 클립 보드에 저장하고 프로그램을 시작하면 .png 파일이 출력됩니다. 클립 보드에 아무 것도 입력하지 않고 프로그램을 시작한 다음 인쇄 화면을 누르면 .png 파일이 출력됩니다.

그러나 프로그램이 이미 .png 파일을 인쇄 한 후에 인쇄 화면을 누르면 절대적으로 아무것도하지 않습니다. ctrl + c를 사용하여 텍스트를 복사 할 수도 없습니다.

사용하는 코드입니다.

from PIL import ImageGrab 
from Tkinter import Tk 
import time 

r = Tk() 

while True: 

    try: 
     im = ImageGrab.grabclipboard() 
     date = time.strftime("%Y-%m-%d %H.%M.%S") 
     im.save(date + ".png") 
     r.clipboard_clear() 
    except IOError: 
     pass 
    except AttributeError: 
     pass 

답변

0

화면의 이미지를 촬영하는

from PIL import ImageGrab 
im = ImageGrab.grab() 
im.save("save.png") 
+0

. 인쇄 화면을 누를 때마다 이미지를 인쇄하고 싶습니다. – Someone

+0

여기서 가능한 바인딩을 볼 수 있습니다 : http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm 인쇄 화면이 목록에 없습니다. windows/linux에서 handeled하면 사용자 programm에 의해 바인드 할 수 없다고 가정합니다 –

1

두 점을 원한다면 당신이 잡아()를 사용한다 :

  1. 은 이미 돌이있다 Tkinter를 사용하여 (예를 들어, while True:). 자신 만의 메인 루프를 만들 때, Tkinter는 필요한 처리를하지 못합니다.

  2. 실제로 단축기를 등록하려면 severalways이 필요합니다. 당신이 실제로 수행 할 수있는 것들

이의 라인을 따라 뭔가 더있다 :

내가하고 싶은 게 아니에요
import Tkinter as tk 
from PIL import Image, ImageGrab 

root = tk.Tk() 
last_image = None 

def grab_it(): 
    global last_image 
    im = ImageGrab.grabclipboard() 
    # Only want to save images if its a new image and is actually an image. 
    # Not sure if you can compare Images this way, though - check the PIL docs. 
    if im != last_image and isinstance(im, Image): 
     last_image = im 
     im.save('filename goes here') 
    # This will inject your function call into Tkinter's mainloop. 
    root.after(100, grab_it) 

grab_it() # Starts off the process