下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。
内存溢出小编现在分享给大家,也给大家做个参考。
#!/usr/bin/python''' ''' import gtk.gdkimport gtkimport 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)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
总结以上是内存溢出为你收集整理的linux下python抓屏小程序全部内容,希望文章能够帮你解决linux下python抓屏小程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)