kostenloser Webspace werbefrei: lima-city


Python Qt Checkboxen untereinander nicht anklickbar?

lima-cityForumProgrammiersprachenPython

  1. Autor dieses Themas

    frodo89

    Kostenloser Webspace von frodo89

    frodo89 hat kostenlosen Webspace.

    Hallo Leute,


    Ich habe folgendes Problem.
    Ich habe eine Datenbank mit Personendaten.
    Unter anderem eine mit einer Anzahl von Namen.
    Ich möchte jetzt für jeden dieser Namen in meiner Qt-GUI eine Checkbox anzeigen,
    damit ich auswählen kann, welcher Personen Datensätze mir angezeigt werden sollen.

    Dafür habe ich die Namen aus der Datenbank in eine Liste ausgelesen.
    Die Liste enthält jetzt Namen, z.B.:
    namen_list = ['gustav', 'hans', 'peter', 'dieter', 'oskar', 'ulf'


    Um mir abhängig von der Anzahl der Namen die Checkboxen zu erzeugen versuchte ich es mit diesen Zeilen:

    for i in range( len(namen_list)):
        exec("""myapp.check_""" + namen_list[i][0] + """ = QtGui.QCheckBox(myapp.group_Variablen)""")
        exec("""myapp.check_""" + namen_list[i][0] + """.setGeometry(QtCore.QRect(20, 10, 200, 40 + i * 40))""")    
        exec("""myapp.check_""" + namen_list[i][0] + """.setObjectName(name_list[i][0])""")
        exec("""myapp.check_""" + namen_list[i][0] + """.setText(str(var_list[i][0]))""")


    verwendet.
    Funktioniert auch Optisch einwandfrei...
    Alle Namen werden untereinander mit einem Abstand von 40(?) angezeigt.
    Allerdings lässt sich nur das letzte anklicken. Also z.B. nur die Checkbox 'Ulf'

    bei der überprüfung:
    myapp.check_oskar.isClickable() wird mir True zurückgegeben.
    Und auch wenn ich mit Tab zwischen den Boxen hin und her schalte, kann ich mit SPACE die Checkbox mit einem Häckchen versehen. Aber anklicken geht nur bei der letzten, oder wenn ich die Checkboxen versetzt anzeige.
    (Die x-kordinate ebenfalls auf 20 + i * 40 setze)


    Hat jemand eine Idee, woran das liegen kann?






    EDIT:
    Woran es liegt weis ich immer noch nicht und fände eine Antwort darauf sehr interessant.
    Gelöst hab ich das Problem mitlerweile, in dem ich sie Boxen in ein Grid-Layout gepackt habe.

    lg,
    ...

    Beitrag zuletzt geändert: 14.12.2009 15:01:55 von frodo89
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. k**********k

    Ohne mehr Code ist das relativ schwierig zu sagen, aber ich vermute mal es liegt an dieser Zeile:

    exec("""myapp.check_""" + namen_list[i][0] + """.setGeometry(QtCore.QRect(20, 10, 200, 40 + i * 40))""")


    Es scheint mir ganz so, als würdest du setGeometry falsch benutzen, denn die Parameter von setGeometry (bzw. die Parameter des QRects) sind (x-postion, y-position, width, height). Sprich du änderst eigentlich nicht die Position sondern nur die Größe der Checkbox, und ich vermute mal es sieht nur so aus, als würdest du die Position ändern, weil Qt die Checkbox automatisch in die mitte des ihr zugewiesenen Raumes rückt. Dadurch entsteht das Problem, dass die letze Checkbox auf allen anderen drauf liegt, und du die anderen folglich nicht mehr anklicken kannst. Was du gewollt hast ist also vermutlich das:

    exec("""myapp.check_""" + namen_list[i][0] + """.setGeometry(QtCore.QRect(20, 40 + i * 40, 200, 20))""")


    Mehr dazu.

    lg Ketchup

    Beitrag zuletzt geändert: 15.12.2009 8:58:31 von ketchupfleck
  4. Autor dieses Themas

    frodo89

    Kostenloser Webspace von frodo89

    frodo89 hat kostenlosen Webspace.

    Oh!
    Ich hatte einfach mal mit den Parametern rumexperimentiert, und habe dabei gemerkt, das ich mit dem letzten Parameter die Position in der Vertikalen verändern konnte.
    Darum dachte ich mir, so unsinnig wie es mir auch zunächst vorkam, das die parameter: x-position, height, width, y-position sei.
    Aber jetzt ist mir alles klar!

    Vielen dank Dir, Ketchup!
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!