2014-12-10 3 views
1

파이썬 2.7로 작업중인 프로그램이 파이썬 3.3으로 변환하려고합니다.화면 픽셀 색상 가져 오기 python3

실무 버전은 다음과 같습니다

#!/usr/bin/python2 
import gtk.gdk 
import sys 

def PixelAt(x, y): 
    w = gtk.gdk.get_default_root_window() 
    pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, 1, 1) 
    cm = w.get_colormap() 
    pb = pb.get_from_drawable(w, cm, x, y, 0, 0, 1, 1) 
    return pb.pixel_array[0][0] 

print(PixelAt(int(sys.argv[1]), int(sys.argv[2]))) 

부분적으로 변환 된 하나입니다

#!/usr/bin/python3 
from gi.repository import Gtk, Gdk, GdkPixbuf 
import sys 

def PixelAt(x, y): 
    w = Gdk.get_default_root_window() 
    pb = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, False, 8, 1, 1) 
    cm = w.get_colormap()        # What goes here? 
    pb = pb.get_from_drawable(w, cm, x, y, 0, 0, 1, 1) # What goes here? 
    return pb.pixel_array[0][0] 

print(PixelAt(int(sys.argv[1]), int(sys.argv[2]))) 

는 내가 변환 완료해야합니까?

#!/usr/bin/python3 
# Print RGB color values of screen pixel at location x, y 
from gi.repository import Gdk 
import sys 

def PixelAt(x, y): 
    w = Gdk.get_default_root_window() 
    pb = Gdk.pixbuf_get_from_window(w, x, y, 1, 1) 
    return pb.get_pixels() 

print(tuple(PixelAt(int(sys.argv[1]), int(sys.argv[2])))) 

[END-EDIT]을 수행해야

답변

2
w = Gdk.get_default_root_window() 
pb = Gdk.pixbuf_get_from_window(w, x, y, 1 ,1) 

: 여기 @jku하는

[편집]

덕분에 내 전체 python3 색상 선택기입니다. pixbuf_get_from_window()은 사용했던 Gdk2 함수처럼 None을 반환 할 수 있습니다. 사용하기 전에 반환 값을 확인해야합니다.

+0

감사합니다. @jku! 내 게시물 편집 내 마지막 전체 프로그램을 추가했습니다. – Harvey