Hallo
Vorab: Ich möchte hier nicht als Besserwisser wahrgenommen werden… ( @Villeroy @Wanderer etcpp. können das genausogut wie ich nach python portieren ) …es geht mir eigentlich nur darum zu zeigen daß:
- python existiert und aus LO benutzt werden kann
- python keine »Raketenwissenschaft« ist
- zb. hier ein direkter Vergleich IMHO hilfreich ist, um andere Leute zu ermutigen auch mal in python zu programmieren.
zum Thema, hier ist der bereits leicht abgewandelte Code aus @Villeroy’s ListboxPlatzhalter.odt
SUB ListwertUebertragen(oEvent AS OBJECT)
oListbox = oEvent.Source.Model
oDoc = oListbox.Parent
stEinfueg = oListbox.Tag 'Information in den Zusatzinformationen der Listbox
stName = oListbox.SelectedValue
oTextFieldMasters = ThisComponent.getTextFieldMasters()
oMaster = oTextFieldMasters.getByName("com.sun.star.text.fieldmaster.User."& stEinfueg)
oMaster.Content = stName
END SUB
und hier ein mögliches Equivalent in python:
def uebertrage_Auswahl(event):
doc = (box := event.Source.Model).Parent.Parent.Parent
fields = doc.TextFieldMasters
fields[ "com.sun.star.text.fieldmaster"
f".User.{box.Tag}"
].Content = box.SelectedValue
-
ich wusste bisher nicht, daß Basic intern so »optimiert« daß bereits einmal …Parent
ausreicht, um das Dokument-objekt zu erhalten
Ich Depp … »oDoc« wird ja gar nicht mehr verwendet in Zeile 6 steht ja »thisComponent« ergo Basic optimiert da nix weg sondern möchte das genauso wie …→, python braucht an der Stelle explizit dreimal .Parent
bis zu Dokument.
- in der zweiten Zeile benutze ich den sogenannten := Walrusoperator für eine seperate Zuweisung innerhalb der klammern. ( seit python3.8 also Oktober 2019 *** )
- unten sieht man daß eine logische Zeile, falls sie zu lang wird, relativ beliebig zwischen öffnender [ und schliessender ] umgebrochen werden kann…
- und praktisch überall die Methode
…getByName
durch eben diesen dictionary--access
mit den eckigen Klammern drumrum ersetzt werden kann.
- … die String-formatierung per f"…{ }…" gibts schon schon lang genug.
***falls heute noch LO-versionen ab 7.5 für Windows|Mac immer noch mit python-versionen < 3.8 ausgeliefert werden ist das eher ein strukturelles Problem von LO !!