[ TAG 447 ][11.06.2022] -Erfolgreich -IAP-20220403-20220403-1150 -Positionierungsproblem
Ich habe gestern das Positionsproblem der FRM-Kindelemente gelöst. Das System befindet sich noch in einer sehr frühen Phase, jedoch gefällt es mir jetzt schon wie es aussieht. Es ist etwas komplexer geworden, deswegen muss ich wahrscheinlich später noch das System besser formulieren.
Ich muss heute mit folgender Ausgabe arbeiten. Die x- und y- Koordinaten der FRM-Objekte müssen heute definiert bzw. erarbeitet werden.
-------------------------------------------------------------
GRP00-FRM00: {'x': None, 'y': None, 'width': 120, 'height': 15, 'CHLD-TOTAL-WIDTH': 120, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP01-FRM00: {'x': None, 'y': None, 'width': 120, 'height': 15, 'CHLD-TOTAL-WIDTH': 120, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP01-FRM01: {'x': None, 'y': None, 'width': 120, 'height': 15, 'CHLD-TOTAL-WIDTH': 120, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP01-FRM02: {'x': None, 'y': None, 'width': 120, 'height': 15, 'CHLD-TOTAL-WIDTH': 120, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM00: {'x': None, 'y': None, 'width': 160, 'height': 15, 'CHLD-TOTAL-WIDTH': 160, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM01: {'x': None, 'y': None, 'width': 160, 'height': 15, 'CHLD-TOTAL-WIDTH': 160, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM02: {'x': None, 'y': None, 'width': 160, 'height': 15, 'CHLD-TOTAL-WIDTH': 160, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM03: {'x': None, 'y': None, 'width': 160, 'height': 15, 'CHLD-TOTAL-WIDTH': 160, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM04: {'x': None, 'y': None, 'width': 160, 'height': 15, 'CHLD-TOTAL-WIDTH': 160, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM05: {'x': None, 'y': None, 'width': 160, 'height': 15, 'CHLD-TOTAL-WIDTH': 160, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM06: {'x': None, 'y': None, 'width': 160, 'height': 15, 'CHLD-TOTAL-WIDTH': 160, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
GRP02-FRM07: {'x': None, 'y': None, 'width': 280, 'height': 15, 'CHLD-TOTAL-WIDTH': 280, 'CHILD-TOTAL-HEIGHT': 15, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'bg': None, 'alignment': 'HORIZONAL', 'widget': None}
-------------------------------------------------------------
Für diese Aufgabe muss ich die [ GET_CHLD_STLKEYS ]-Methode erweitern. Die Methode bekommt ein zusätzliches Attribut. Wenn das Attribut gesetzt ist, dann gibt die Methode nur bis zu einen bestimmten [ lvl ] die Kindelemente aus. Sollte das Attribute nicht gesetzt sein bzw. den Wert None haben, so werden alle untergeordneten Kindelemente aus allen Ebenen bzw. Levels ausgegeben.
Das Ergebnis sieht so aus.
def GET_CHLD_STLKEYS(stl_key, userstl, event_elm=True, lvl=None):
lst = []
for k in userstl:
if stl_key in k and stl_key != k:
lvl_ = len(k.split("-"))
if lvl_ > 0:
lvl_ = lvl_ - 1
if event_elm:
if lvl is None:
lst.append(k)
elif lvl_ <= lvl:
lst.append(k)
else:
if IS_EVNT_ELMT(k) is False:
if lvl is None:
lst.append(k)
elif lvl_ <= lvl:
lst.append(k)
return lst
Ausgabe im inneren der Methode. Ich habe oben bereits die Print-Anweisung gelöscht. Die Benennungen der Variablen sollten jedoch schlüssig und nachvollziehbar sein.
k: GRP02-FRM07 lvl_: 1 lvl: 1
k: GRP02-FRM07-LBL00 lvl_: 2 lvl: 1
k: GRP02-FRM07-LBL01 lvl_: 2 lvl: 1
k: GRP02-FRM07-ENT00 lvl_: 2 lvl: 1
k: GRP02-FRM07-ENT01 lvl_: 2 lvl: 1
k: GRP02-FRM07-ENT02 lvl_: 2 lvl: 1
k: GRP02-FRM07-ENT03 lvl_: 2 lvl: 1
k: GRP02-FRM07-ENT00:NORMAL lvl_: 2 lvl: 1
k: GRP02-FRM07-ENT00:ACTIVE lvl_: 2 lvl: 1
k: GRP02-FRM07-ENT00:HOVER lvl_: 2 lvl: 1
So würde der Einsatz dieser Methode aussehen.
def DeFSTL_FNC_GRP(stl_key=None, defstl=None, userstl=None, ref_user=None, ref_def=None):
print("")
print("DeFSTL_FNC_GRP")
chld = GET_CHLD_STLKEYS(stl_key=stl_key, userstl=ref_user, event_elm=False, lvl=1)
print(f"stl_key: {stl_key}")
print(f"chld: {chld}")
print("")
Ausgabe der Print-Anweisungen im oben aufstellten Python-Code.
-------------------------------------------------------------
stl_key: GRP02
chld: ['GRP02-FRM00', 'GRP02-FRM01', 'GRP02-FRM02', 'GRP02-FRM03', 'GRP02-FRM04', 'GRP02-FRM05', 'GRP02-FRM06', 'GRP02-FRM07']
DeFSTL_FNC_GRP
stl_key: GRP00
chld: ['GRP00-FRM00']
DeFSTL_FNC_GRP
stl_key: GRP01
chld: ['GRP01-FRM00', 'GRP01-FRM01', 'GRP01-FRM02']
DeFSTL_FNC_GRP
stl_key: GRP02
chld: ['GRP02-FRM00', 'GRP02-FRM01', 'GRP02-FRM02', 'GRP02-FRM03', 'GRP02-FRM04', 'GRP02-FRM05', 'GRP02-FRM06', 'GRP02-FRM07']
-------------------------------------------------------------
Wir haben jetzt die [FRM]-Elemente lokalisiert und können jetzt auf ihre Positions-Eigenschaften zugreifen.
Kommentare
Kommentar veröffentlichen