List Checkbox und Signale
Verfasst: Montag 11. Juli 2011, 15:16
Hi ich steh mal wieder vor einem Problem :K
Ich erstelle Anhand einer DB Abfrage verschieden viele Lineedits und Checkboxen die Checkboxen werden mittels einer List erzeugt
so jetzt möche ich allerdings das sich in den Lineedits der Text ändert wenn eine Checkbox angeklickt wird.
Alles schön und gut wenn ich die Checkboxen per Hand erstellen würde das ich sie ja dynamisch erstelle und Sie in einer List sind weiss ich jetzt nicht ganz welche Checkbox angeklickt wird um ein Signal auszufürhen. Ich muss aber wissen welche angeklickt wird damit ich auch das bestimmte Lineedit verändern kann.
Hier mal mein Code
Ich habe das auslesen aus der DB rausgenommen und dafür einfach nur die dbreturn eingefügt
Danke schon mal
Gruß ScooB
Ich erstelle Anhand einer DB Abfrage verschieden viele Lineedits und Checkboxen die Checkboxen werden mittels einer List erzeugt
so jetzt möche ich allerdings das sich in den Lineedits der Text ändert wenn eine Checkbox angeklickt wird.
Alles schön und gut wenn ich die Checkboxen per Hand erstellen würde das ich sie ja dynamisch erstelle und Sie in einer List sind weiss ich jetzt nicht ganz welche Checkbox angeklickt wird um ein Signal auszufürhen. Ich muss aber wissen welche angeklickt wird damit ich auch das bestimmte Lineedit verändern kann.
Hier mal mein Code
Code: Alles auswählen
import sys
from PySide.QtCore import *
from PySide.QtGui import *
import sqlite3
from functools import partial
class has_tab(QWidget):
def __init__(self, sprachopt):
super(has_tab, self).__init__()
self.dbreturn = [(1, 'testtest', 370.0), (2, 'testtest22', 100.0), (3, 'testtest333', 1220.0)]
mainlayout = QVBoxLayout()
self.getOptionen()
mainlayout.addWidget(self.horizontalGroupBox)
self.setLayout(mainlayout)
def getOptionen(self):
self.horizontalGroupBox = QGroupBox("Optionen")
self.layout = QGridLayout()
self.scrollarea = QScrollArea()
self.cbox = []
self.text_lineedit = []
self.preise_lineedit = []
self.scrollarea.setWidgetResizable(True)
dbdata = self.dbreturn
i=0
for row in dbdata:
self.text_lineedit.append(QLineEdit(str(dbdata[i][1]), self))
self.text_lineedit[i].setReadOnly(True)
self.preise_lineedit.append(QLineEdit(str(dbdata[i][2]), self))
self.preise_lineedit[i].setReadOnly(True)
self.preise_lineedit[i].setAlignment(Qt.AlignRight)
self.cbox.append(QCheckBox(self))
self.cbox[i].stateChanged.connect(partial(self.test, 1111))
self.layout.addWidget(self.text_lineedit[i],i,0)
self.layout.addWidget(self.preise_lineedit[i],i,1)
self.layout.addWidget(self.cbox[i],i,2)
self.layout.setRowMinimumHeight(i,20)
self.layout.setRowStretch(i,1)
self.layout.setColumnMinimumWidth(0,600)
self.layout.setColumnStretch(0,1)
i=i+1
if i == 10:
break
self.horizontalGroupBox.setLayout(self.layout)
def test(self, tester, tester2):
# Funktion die ausgeführt werden soll
print tester
print tester2
print self.preise_lineedit[0].text()
if __name__ == "__main__":
app = QApplication(sys.argv)
window=has_tab(1)
window.show()
sys.exit(app.exec_())
Danke schon mal
Gruß ScooB