国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

linux下python抓屏實現方法

2020-02-23 01:22:03
字體:
來源:轉載
供稿:網友

本文實例講述了linux下python抓屏實現方法。分享給大家供大家參考。具體實現代碼如下:

#!/usr/bin/python'''by zevolo, 2012.12.20'''import gtk.gdkimport gtkimport glibclass 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, x = 0, y = 0):    self.x = x    self.y = yclass MyPoint(MyPair):  def __init__(self, x = 0, y = 0):    MyPair.__init__(self, x, y)class MySize(MyPair):  def __init__(self, w = 0, h = 0):    MyPair.__init__(self, x, 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):    passclass 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, %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, window = None, rect = None, 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, 0, sz[0], sz[1])    print "The size of the window is (%d, %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.w, r.h)    buf = buf.get_from_drawable(w,w.get_colormap(), r.x, r.y, 0, 0, r.w, 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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天长市| 唐山市| 同德县| 梨树县| 德昌县| 抚州市| 阳曲县| 南平市| 曲松县| 十堰市| 百色市| 中方县| 子洲县| 施秉县| 吴旗县| 佛山市| 黔西| 仲巴县| 高唐县| 邓州市| 朝阳市| 临猗县| 潢川县| 新宾| 林口县| 金寨县| 玉溪市| 汾西县| 唐河县| 临湘市| 桃园市| 昌邑市| 永泰县| 夏津县| 论坛| 志丹县| 舒兰市| 六安市| 焦作市| 沅陵县| 阿鲁科尔沁旗|