Hi.
Hab mir in der Demo zu wxPython unter Miscellaneous/OGL das Beispiel angesehen und die Doku zu wx.ogl überfolgen und frage mich jetzt ob es eine Möglichkeit gibt das ganze Angezeigt auch als Bild zu speichern? So weit ich sehen bietet die Lib da kein Funktion. Gibt es andere Möglichkeiten den Fensterinhalt abzufangen (auch den nicht sichtbaren) und das dann zu Speichern?
lg
[Nicht gelöst] Frage zu wx.ogl
Mal ein anderer Ansatz: Kann man nicht eventuell von dem ganzen (sowohl das was man sieht und das was man nicht sieht weil das Fenster eventuell zu Klein ist und man dan zum Bereich scrollen muss) Fensterbereich mit einem Modul ein Screenshot machen? Ich denke mit http://www.pythonware.com/products/pil/ wir das gehen (werde ich Morgen ausprobieren), aber ist das wirklich sauber die Lösung
Was mein ihr?
lg

lg
PIL kann ich schon mal vergessen ^^ -> http://www.pythonware.com/library/pil/h ... gegrab.htm

Ich halte mal ausschau nach was anderem. Wenn ich nichts finde steige ich eventuell auf PyGTK um, da es da sowas anscheinend gibt (Dia 0.95 ist ja auch in GTK geschrieben und da geht es ja auch ^^).
EDIT: Text Korrigiert.
Sollte schon unter Win und Linux laufenThe ImageGrab module can be used to copy the contents of the screen or the clipboard to a PIL image memory.
The current version works on Windows only.

Ich halte mal ausschau nach was anderem. Wenn ich nichts finde steige ich eventuell auf PyGTK um, da es da sowas anscheinend gibt (Dia 0.95 ist ja auch in GTK geschrieben und da geht es ja auch ^^).
EDIT: Text Korrigiert.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi sape!sape hat geschrieben:Gibt es andere Möglichkeiten den Fensterinhalt abzufangen (auch den nicht sichtbaren) und das dann zu Speichern?
Ich weiß, wie du den sichtbaren Fensterinhalt speichern kannst. Aber ich weiß nicht, wie du den unsichtbaren Fensterinhalt speichern kannst. :K
Ich hab mich da mal ein bischen gespielt. Das Modul ``images.py`` holst du dir von deinem wxPython-Demo-Ordner.
http://paste.pocoo.org/show/aacacdafe67 ... af2b78fd6/
Das müsstest du bei der wxPython-Mailingliste erfragen, denn ich kann mir nicht vorstellen, dass es keine Möglichkeit gibt.

mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi, Gerold. Hab das getestet und Funktioniert wunderbar. Allerdings hatte ich erst ein par Probleme:
Das lag daran.
Aber mit ``.SelectObject`` geht das
Hier der replay: http://paste.pocoo.org/show/1c33017928f ... b01b4dd74/
Und hier das diff: http://paste.pocoo.org/compare/1c330179 ... b01b4dd74/
Ich erwähne das nur der Vollständigkeitshalber falls ein andere auf den Thread stößt und sich dann über den Traceback wundert.
BTW: Das mit den resizen des Fenster, damit auch der nicht sichtbare Bereich erfast wird ist sehr raffiniert
Nochmals vielen Dank
lg
sape
Code: Alles auswählen
newobj = _gdi_.new_MemoryDC(*args, **kwargs)
TypeError: new_MemoryDC() takes exactly 0 arguments (1 given)
Code: Alles auswählen
dc2 = wx.MemoryDC(bmp)
Code: Alles auswählen
dc2 = wx.MemoryDC()
dc2.SelectObject(bmp)
Und hier das diff: http://paste.pocoo.org/compare/1c330179 ... b01b4dd74/
Ich erwähne das nur der Vollständigkeitshalber falls ein andere auf den Thread stößt und sich dann über den Traceback wundert.
BTW: Das mit den resizen des Fenster, damit auch der nicht sichtbare Bereich erfast wird ist sehr raffiniert

Nochmals vielen Dank

lg
sape
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Kleine Frage am Rande: Warum definiert ihr im LodgeIt die Pastes als Privat, wenn ihr sie sowieso hier postet? Wenn sie "Publik" sind, erscheinen sie auch im Listing was ich ganz nett finde, auch für den Fall dass es irgendwann mal eine Suchfunktion geben würde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Puh, hab noch ein wenig getestet und ganz so Funktioniert das doch nicht. Es wird doch nicht alles erfast. Bleibt also immer noch das Problem wie man den ganzen Inhalt vom ``ogl.ShapeCanvas`` als Bitmap speichern kannsape hat geschrieben:[...]
BTW: Das mit den resizen des Fenster, damit auch der nicht sichtbare Bereich erfast wird ist sehr raffiniert![]()

Eine Deutsch Mailing Liste zu wxPython gibt es nicht oder? Hab schon alles abgesucht auf der HP.
BTW: Hab eben auch zu ``ogl.ShapeCanvas`` das ganze Web durchsucht und nichts dazu passende gefunden. Kann doch nicht sein das ich der einzige bin der sowas braucht ^^
Leo, kA. Ich stelle meine Pastes nie privat rein, es sei wenn ich ein replay mache wo das Original auch schon Privat ist.
lg und ne gn8
sape
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Leonidas!Leonidas hat geschrieben:Warum definiert ihr im LodgeIt die Pastes als Privat, wenn ihr sie sowieso hier postet?
Ich habe das Codebeispiel als "Privat" deklariert, damit es NICHT in irgendeiner Liste auftaucht. Das Beispiel funktioniert nicht korrekt. Es gibt also keinen Grund es übermäßig zu publizieren. Ich wollte es so! Also bitte nicht mit dem Zeigefinger rumfuchteln.
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Sape!
mfg
Gerold

Ein Fenster lässt sich maximal bis zur Screen-Size vergrößern. Es gibt ein Flackern und ich würde es mal als "Nicht Saubere Programmierung" hinstellen. Deshalb brauchst du die Hilfe der wxPython-Mailingliste. Dort sind die wxPython-Entwickler und Profis zu hause.sape hat geschrieben:hab noch ein wenig getestet und ganz so Funktioniert das doch nicht.
Nur eine englische... eine andere Chance hast du nicht. Ich kann kaum Englisch, deshalb musst du die Frage selber stellen.sape hat geschrieben:Eine Deutsch Mailing Liste zu wxPython gibt es nicht oder?
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hast mich falsch verstanden - ich wollte gar nicht mit dem Zeigefinger rumfuchteln, sondern nur wissen, welchen Sinn das hat. Also nichts für ungut.gerold hat geschrieben:Ich habe das Codebeispiel als "Privat" deklariert, damit es NICHT in irgendeiner Liste auftaucht. Das Beispiel funktioniert nicht korrekt. Es gibt also keinen Grund es übermäßig zu publizieren. Ich wollte es so! Also bitte nicht mit dem Zeigefinger rumfuchteln.
(Und dass im LodgeIt reihenweise kaputte Codes sind, ist noch etwas ganz anderes

My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hier ist ein etwas kürzeres Beispiel -- allerdings ist das Problem damit noch nicht gelöst.
lg
Gerold

Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import wx
import wx.lib.ogl as ogl
wx.SetDefaultPyEncoding("iso-8859-1")
class AppFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Demo", size=(300,200))
vbox = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(vbox)
sw = wx.ScrolledWindow(self)
sw.SetScrollbars(50, 40, 10, 100)
vbox.Add(sw, 1, wx.EXPAND)
canvas = ogl.ShapeCanvas(sw, size = wx.Size(500, 400))
canvas.SetSizeHints(500, 400)
self.canvas = canvas
sw.SetVirtualSize(canvas.GetSize())
canvas.SetBackgroundColour("LIGHT BLUE")
diagram = ogl.Diagram()
canvas.SetDiagram(diagram)
diagram.SetCanvas(canvas)
shape = ogl.CircleShape(20.0)
shape.SetX(25.0)
shape.SetY(25.0)
canvas.AddShape(shape)
diagram.ShowAll(True)
cmd = wx.Button(self, -1, "Speichern")
vbox.Add(cmd, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5)
cmd.Bind(wx.EVT_BUTTON, self.save_image)
# apply sizer
self.Show()
def save_image(self, event = None):
print "save..."
canvas = self.canvas
import os
if os.path.isfile("aaa.bmp"):
os.remove("aaa.bmp")
dc = wx.ClientDC(canvas)
#dc = wx.ClientDC(self)
w, h = dc.GetSizeTuple()
#print "Handle:", canvas.GetHandle()
#print dc.GetHDC()
print w, h
bmp = wx.EmptyBitmap(w, h)
dc2 = wx.MemoryDC(bmp)
#old_size = self.GetSize()
#self.SetSize(wx.Size(w + 200, h + 200))
#wx.Yield()
dc2.Blit(0, 0, w, h, dc, 0, 0)
#self.SetSize(old_size)
bmp.SaveFile("aaa.bmp", wx.BITMAP_TYPE_BMP)
#test_window.bmp.SaveFile("aaa.bmp", wx.BITMAP_TYPE_BMP)
def main():
app = wx.PySimpleApp()
ogl.OGLInitialize()
frame = AppFrame()
app.MainLoop()
app.Destroy()
if __name__ == "__main__":
main()
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich kann auch leider kaum englisch (Eigentlich garnicht.) :/ Aber ich werde es trotzdem mal probieren und nächste Woche in der Mailingliste nachfragen und dann das Ergebnis hier posten.gerold hat geschrieben:Nur eine englische... eine andere Chance hast du nicht. Ich kann kaum Englisch, deshalb musst du die Frage selber stellen.sape hat geschrieben:Eine Deutsch Mailing Liste zu wxPython gibt es nicht oder?
lg
sape
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Um den Thread wieder zu beleben:
http://lists.wxwidgets.org/cgi-bin/ezml ... dphbmaghdh
Vielleicht findet man dort etwas brauchbares.
mfg
Gerold

Um den Thread wieder zu beleben:
http://lists.wxwidgets.org/cgi-bin/ezml ... dphbmaghdh
Vielleicht findet man dort etwas brauchbares.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.