ubuntuusers.de

Python - Screenshots

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Ishidres

Avatar von Ishidres

Anmeldungsdatum:
30. März 2015

Beiträge: Zähle...

Hallo Leute!

Es ist möglich mit folgendem Python-Code einen Screenshot zu machen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import gtk.gdk

w = gtk.gdk.get_default_root_window() #
sz = w.get_size()                     # Bildschirm-Aufloesung

print "Bildschirm-Aufloesung %d x %d" % sz

pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])

if (pb != None):
    pb.save("screenshot.png","png")
    print "Screenshot gespeichert."
else:
    print "Fehler."

Hier meine Frage: Ist es möglich, dass ich bestimmen kann von welchem Fenster der Screenshot aufgenommen werden soll? Oder noch besser: Das ich ein Fenster bestimmen kann und ein Bereich in diesem Fenster aufgenommen wird.

Ich freue mich über jede Antwort! ☺

VG Ishidres

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Wie willst Du das Fenster bestimmen? Qua Name des Programms? Wenn das mehrfach läuft? Qua PID? Wenn das Programm mehrere Fenster hat wie Gimp? Mit der Maus draufklicken?

Ishidres

(Themenstarter)
Avatar von Ishidres

Anmeldungsdatum:
30. März 2015

Beiträge: 68

Mmmh, ich hätte eigentich über den Namen des Fensters nachgedacht!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13204

Ishidres schrieb:

Mmmh, ich hätte eigentich über den Namen des Fensters nachgedacht!

Guru Meditation?

SCNR 😀

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

zwei Anmerkung zum Skript:

  • kryptische und kurze Varibeln-Bezeichnung machen den Quellcode (für andere) schlechter leserlich. Aussagekräftige Namen wie z.b. "main_window" statt "w" oder "screen_size" statt "sz" sind besser. Gemäß dem Zen of Python: explizit ist besser ☺

  • schöner als sz = w.get_size() wäre IMHO screen_height, screen_width = w.get_size()

Zum eigentlichen Problem: Kann GTK das Fenster nicht anhand des Labels oder einer ID auswählen? Da musst du dich wohl mal durch die Doku wühlen. Oder hast du RTFM schon erfolglos hinter dir?

Gruß, noisefloor

Ishidres

(Themenstarter)
Avatar von Ishidres

Anmeldungsdatum:
30. März 2015

Beiträge: 68

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import gtk.gdk

main_window = gtk.gdk.get_default_root_window() #
screen_size = main_window.get_size()            # Bildschirm-Aufloesung

print "Bildschirm-Aufloesung %d x %d" % screen_size

pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pixbuf = pixbuf.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])

if (pixbuf != None):
    pixbuf.save("screenshot.png","png")
    print "Screenshot gespeichert."
else:
    print "Fehler."

Keba Team-Icon

Ehemalige
Avatar von Keba

Anmeldungsdatum:
24. Juli 2007

Beiträge: 3802

Der Codeblock ohne weitere Aussagen/Fragen soll uns nun was sagen?

Auf dem ersten Blick behaupte ich mal, dass du sz überall durch screen_size ersetzen solltest, auch in den Zeilem 8 und 9, ähnlich gilt für w und main_window.

Grüße, Keba

Antworten |