Radio – Buttons

Die UI – Masken erlauben auch die Verwendung und Konfiguration von Radio – Schaltern. Bei Radio – Schaltern gilt, dass wenn einer der Schalter aktiv ist, alle anderen deaktiviert werden, so dass immer nur einer von mehreren Möglichkeiten verwendet werden kann. Bei den QT Masken müssen Radio – Buttons daher in einen Rahmen eingefügt werden, damit diese als zusammen gehörende Gruppe erkannt werden.

In diesem Beispiel werden die Radio-Schalter so einstellen, dass die Optionen abhängig vom gewählten Innensparren ausgewählt werden.

Dazu erstellen wir uns in unserem In-Skript eine Funktion zum Abfragen welcher Variant von Innensparren in der Zeichnung vorhanden ist.

def initSparrenAuswahl(sc):
    listeSparren1 = kkp.Objektliste2Erstellen(sc.objnr() , „900.001.010.100.030.0010“)
    listeSparren2 = kkp.Objektliste2Erstellen(sc.objnr() , „900.001.010.100.030.0012“)
    listeSparren3 = kkp.Objektliste2Erstellen(sc.objnr() , „900.001.010.100.030.0015“)
    if len(listeSparren1) > 0: pass #TODO
    if len(listeSparren2) > 0: pass #TODO
    if len(listeSparren3) > 0: pass #TODO

Das Modul SegmentConfig liefert uns eine praktische Funktion um den entsprechenden Radio – Button auszuwählen.

def initSparrenAuswahl(sc):
    listeSparren1 = kkp.Objektliste2Erstellen(sc.objnr() , „900.001.010.100.030.0010“)
    listeSparren2 = kkp.Objektliste2Erstellen(sc.objnr() , „900.001.010.100.030.0012“)
    listeSparren3 = kkp.Objektliste2Erstellen(sc.objnr() , „900.001.010.100.030.0015“)
    if len(listeSparren1) > 0: sc.selectRadioButton(„radioRafters1“)
    if len(listeSparren2) > 0: sc.selectRadioButton(„radioRafters2“)
    if len(listeSparren3) > 0: sc.selectRadioButton(„radioRafters3“)
Nicht vergessen, dass die Funktion auch aufgerufen werden muss!
def createXML():
    try: iObjNr = int(XML_PARAM)
    except: iObjNr = 0
    sc = SC.SegmentConfig(iObjNr)
    sc.setWindowTitle(„Hello UI!“)
    initSparrenAuswahl(sc)
    initAchsabstand(sc)
    sXml = sc.toXml()
    return sXml
if __name__ == ‚__main__‘:
    sXml = createXML()
    print(sXml)
Wenn wir einen Radio – Button gewählt haben, wollen wir im Out-Skript dafür sorgen, dass die entsprechenden Profile eingestellt werden.
def setSparrenauswahl(sc):
    a = sc.findByName(„radioRafters1“)
    b = sc.findByName(„radioRafters2“)
    c = sc.findByName(„radioRafters3“)
    ifaisNone: return
    if b is None: return
    if c is None: return
    if a.m_sValue == „1“:
        kkp.Profil_in_Gruppe_tauschen(sc.objnr() , „900.001.010.100.030.0010“)
    if b.m_sValue == „1“:
        kkp.Profil_in_Gruppe_tauschen(sc.objnr() , „900.001.010.100.030.0012“)
    if c.m_sValue == „1“:
        kkp.Profil_in_Gruppe_tauschen(sc.objnr() , „900.001.010.100.030.0015“)
Über den Wert m_sValue des Knoten können wir prüfen, ob der Radio-Schalter gedrückt wurde. Ist der Wert „1“ ist der Radio – Button gewählt, ansonsten ist der Wert „0“.
Das müssen wir für alle 3 Radio – Buttons machen.
Passend zu den Innensparren könnten wir nun auch noch weitere Einstellungen vornehmen, wie beispielsweise die Seitensparren einstellen. Da die Seitensparren nicht mit im mittleren Segment stecken, müssen wir diese aber global einstellen.
def setSparrenauswahl(sc):
    a = sc.findByName(„radioRafters1“)
    b = sc.findByName(„radioRafters2“)
    c = sc.findByName(„radioRafters3“)
    if a is None: return
    if b is None: return
    if c is None: return
    if a.m_sValue == „1“:
        kkp.Profil_in_Gruppe_tauschen(sc.objnr() , „900.001.010.100.030.0010“)
        kkp.Profil_in_Gruppe_tauschen(100 , „900.001.010.100.040.0010“)
        kkp.Profil_in_Gruppe_tauschen(100 , „900.001.010.100.050.0010“)
    if b.m_sValue == „1“:
        kkp.Profil_in_Gruppe_tauschen(sc.objnr() , „900.001.010.100.030.0012“)
        kkp.Profil_in_Gruppe_tauschen(100 , „900.001.010.100.040.0010“)
        kkp.Profil_in_Gruppe_tauschen(100 , „900.001.010.100.050.0010“)
    if c.m_sValue == „1“:
        kkp.Profil_in_Gruppe_tauschen(sc.objnr() , „900.001.010.100.030.0015“)
        kkp.Profil_in_Gruppe_tauschen(100 , „900.001.010.100.040.0012“)
        kkp.Profil_in_Gruppe_tauschen(100 , „900.001.010.100.050.0012“)