Screenshot per Makro

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Re: Screenshot per Makro

Beitrag von craig22 »

Hallo karolus,

danke.

Ich nutze die Geany-IDE zum testen, dort ist der Einzug per default auf 4 Leerzeichen eingestellt.
Wenn ich aber die leere Printanweisung mit nur einem Tab einrücke, funktioniert der Screenshot nicht.
Er wird abgearbeitet, aber es passiert nichts.

Bedeutete wohl Programmende ohne Fehler (Code 0):
------------------
(program exited with code: 0)
Drücken Sie eine beliebige Taste . . .
Gleiches passiert, wenn ich Deinen zuletzt geposteten Code nutze.
Der Screenshot wird nur erstellt, wenn die Screenshotanweisungen ausserhalb der Funktion stehen.
Die Funktion-Definition habe ich eingebaut, damit man aus der Basic-IDE heraus auf den Funktionsnamen zugreifen kann.

Statt der leeren Print-Anweisung habe ich nun ein NONE eingefügt, dies funktioniert auch.
Ohne eine Angabe unterhalb der Funktions-Definition, erhalten ich sofort einen Fehler:
File "C:\temp 2021\__Test\Test Geany Python\MyScreenshot2.py", line 6
time.sleep(1)
^
IndentationError: expected an indented block
------------------
(program exited with code: 1)

Drücken Sie eine beliebige Taste . . .
Wie beschrieben nutze ich nun die NONE-Anweisung, gefolgt von den Screenshot-Anweisung(ohne Einrückungen).

Code: Alles auswählen

import pyautogui
import time

def function_screen():
	none
time.sleep(1)
screenshot = pyautogui.screenshot()
screenshot.save("xyzObst.png")
karolus hat geschrieben:Ich hatte es damals (mit verschiedenen Versionen von AOO und LO ( von der Distribution und von Libreoffice direkt) so gelöst,
Das hatte ich im Netz auch gelesen und ich habe den Inhalt der site-packages in den betreffenden LO-Ordner kopiert.
Dann habe ich LO-Python in der Console (install...) aufgerufen und erhielt neue Fehler.
Es gibt Installations-Pakete, welche bei der Installation DLL's in der Windows-Registry registrieren wollen. Dies schug fehl.
Ich habe dann eine manuelle Registirung der DLL's durchgeführt, gemäß dem Motto Augen zu und durch, brachte auch keinen Erfolg.
Auch ein Anpassen der Umgebungsvariablen hat noch nicht geholfen.
karolus hat geschrieben:und es gibt auch noch jemanden der glaubt das robust zu lösen??
Danke für den Link.

@Hiker
Auch Dir Danke ich für Deine Hilfe.

Abseits vom Thema :)
Die Office-Pakete (LO/ AOO) bringen bei der Installation keine eigene JAVA-JRE mit.
Es ist ggf. eine Nachinstallion nötig. Nun verstehe ich ja, dass Python für die UNO-Brigdes erforderlich ist.
Da wäre es doch zukunftorientiert, wenn bei der Installation schlichtweg ein aktueller Python-Download und dessen Installation vorausgeht.
Die Python-Installation sollte dann in einem zentralen Ordner erfolgen, so dass von allen anderen Programmen ein Zugriff über die Umgebungsvariablen möglich ist.

Wenn ich mit dieser und ein paar anderen Aufgaben fertig bin, werde ich mal die verschiedenen Bugzilla's bemühen sich dem Thema anzunehmen.
Denn die heutige Lösung -- Office,etc. und Python -- ist ein wahres Gewurstel, da kommt nicht einmal eine gescheite Mettwurst bei raus:)
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: Screenshot per Makro

Beitrag von Karolus »

Der Screenshot wird nur erstellt, wenn die Screenshotanweisungen ausserhalb der Funktion stehen.
Achso, du führst die ganze Datei aus Geany heraus aus, und nicht die Funktion…

Dann musst du aber auch die Funktionsausführung in die Datei packen.

Code: Alles auswählen

import pyautogui

def function_screen(file_path):	
    screenshot = pyautogui.screenshot()
    screenshot.save(file_path)
    print(f"screenshot saved to path: {file_path}")	

if __name__  ==  "__main__":
    function_screen("screen1.png")
Beachte auch bitte das ich in die Signatur das Argument 'file_path' aufgenommen habe, und die Funktion unten auch mit Übergabe des Dateinamens 'screen1.png' ausführe

Geany kann ich auch, gehe zu
  • →Dokument→Art der Einrückung→[x]Leerzeichen
  • →Dokument→Einzugsbreite→[x]4
  • →Dokument→Tabulatoren durch Leerzeichen ersetzen
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Screenshot per Makro

Beitrag von erikafuchs »

Ihr seid ja alle so lieb. Ich will mich aber nochmal selbst zitieren:
erikafuchs hat geschrieben: Mo, 18.10.2021 13:12 Ansonsten habe ich ja schon weiter oben geschrieben, halte ich es zwischenzeitlich für einfacher, wenn diejenigen, die mit der Meldung "Ergebnis richtig, Rechnung falsch" händisch einen Screenshot machen und abspeichern würden (Auch wenn dazu einige Kids nicht in der Lage sind). Der Screenshot per Pythonscript interessiert mich jetzt aber rein akademisch. Eingebaut hätte ich das wohl nur, wenn es einfach, mit kurzem Code, zu lösen gewesen wäre.
Ich fürchte, ich kann Euch bei dieser Diskussion nur bedingt folgen. Schon bei dem Versuch die von Craig genannten Pakete zu installieren habe ich Probleme bekommen. Ich bin immer noch in Spanien und Frankreich unterwegs und möglicherweise ist mein mitgeführtes Laptop hier schon zu schmalbrüstig.
craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Re: Screenshot per Makro

Beitrag von craig22 »

Hallo Pit,

ich habe einen neuen Thread erstellt...

@karolus
Vielen Dank für die Info's.
Es funktioniert und ich werde mich damit noch ein wenig beschäftigen.
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Antworten