linux下python抓屏小程序
发布时间:2020-05-25 00:19:12 所属栏目:Python 来源:互联网
导读:linux下python抓屏小程序
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 #!/usr/bin/python
'''
'''
import gtk.gdk
import gtk
import glib
class MyRect():
def __init__(self,x = 0,y = 0,w = 0,h = 0):
self.x = x
self.y = y
self.w = w
self.h = h
def __init__(self,x,y):
self.x = min(int(x.x),int(y.x))
self.y = min(int(x.y),int(y.y))
self.w = abs(int(y.x - x.x))
self.h = abs(int(y.y - x.y))
class MyPair():
def __init__(self,y = 0):
self.x = x
self.y = y
class MyPoint(MyPair):
def __init__(self,y = 0):
MyPair.__init__(self,y)
class MySize(MyPair):
def __init__(self,h = 0):
MyPair.__init__(self,y)
class MyCapture():
(event_enter,event_leave) = (0,1)
def __init__(self):
pass
def capture(self):
pass
def handleEvent(self,event):
if event == event_enter:
enterSnap()
elif event == event_leave:
leaveSnap()
def enterSnap(self):
pass
def leaveSnap(self):
pass
def snap(self,window = None,rect = None,name = None):
pass
class MyCaptureGtk(MyCapture):
def __init__(self):
MyCapture.__init__(self)
self.window = gtk.Window()
self.window.set_default_size(1,1)
self.window.connect("button-press-event",self.button_press_cb)
self.first = None
self.second = None
self.window.show()
#self.window.set_events(gtk.gdk.BUTTON_PRESS_MASK)
def getWindow(self):
return self.window
def button_press_cb(self,widget,event):
#print "type is %d" % event.type
if event.type == gtk.gdk.BUTTON_PRESS:
if event.button == 1: #left button
print "(%d,%d),(%d,button is %d" % (event.x_root,event.y_root,event.x,event.y,event.button)
if not self.first:
self.first = MyPoint(event.x_root,event.y_root)
else:
self.second = MyPoint(event.x_root,event.y_root)
self.snap(None,MyRect(self.first,self.second))
self.first = None
elif event.button == 3: #right button
self.uncapture()
else:
pass
def uncapture(self):
if self.first:
print "cancel"
self.first = None
else:
print "exit now"
gtk.gdk.pointer_ungrab()
gtk.mainquit()
def capture(self,time = 0L):
cursor = gtk.gdk.Cursor(gtk.gdk.display_get_default(),gtk.gdk.CROSSHAIR)
ret = gtk.gdk.pointer_grab(self.window.window,True,gtk.gdk.BUTTON_PRESS_MASK,None,cursor,time)
if ret == gtk.gdk.GRAB_SUCCESS:
print "left button start,end,right button cancel/exit"
else:
print "failed to capture %d,(viewable %d),(frozen %d),(already %d)"
% (ret,gtk.gdk.GRAB_NOT_VIEWABLE,gtk.gdk.GRAB_FROZEN,gtk.gdk.GRAB_ALREADY_GRABBED)
def snap(self,name = None):
w = window
if not window:
#w = gtk.gdk.get_default_root_window()
d = gtk.gdk.display_get_default()
w = d.get_default_screen().get_root_window()
r = rect
if not r:
sz = w.get_size()
r = MyRect(0,sz[0],sz[1])
print "The size of the window is (%d,%d,%d)" % (r.x,r.y,r.w,r.h)
n = name
if not n:
n = "screenshot.png"
buf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,r.h)
buf = buf.get_from_drawable(w,w.get_colormap(),r.x,r.h)
if (buf != None):
buf.save(n,"png")
print "Screenshot saved to %s." % n
else:
print "Unable to get the screenshot."
def timeout(data):
#print "timeout"
data.capture()
if __name__ == '__main__':
cap = MyCaptureGtk()
w = cap.getWindow()
w.show()
glib.timeout_add_seconds(1,timeout,cap)
#cap.snap()
gtk.main()
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
