Python Qt Checkboxen untereinander nicht anklickbar?
lima-city → Forum → Programmiersprachen → Python
anklicken
anzahl
boxen
code
datenbank
folgendes problem
ketchup
letzte anklicken
letzten parameter
liste
parameter
personendaten
position
problem
rang
sagen
tab
url
versetzt anzeige
zeile
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage