hoffe jemand kann mir helfen.
ich bin kein gui profi und hab bisher noch nie irgendwo eine erfahrung diesbezüglich sammeln können. ich habe nun mal so rumprobiert. wollte eigntlich nur folgendes erreichen. aus einem fenster aus, öffne ich ein zweites. dieses beinhaltet 2 line edits und ein label. in die line edits möchte ich nun jeweils zwei zahlen eingeben. im label soll immer sogleich die summe "dynamisch" angezeigt werden. d. h. bei jedem zahlen update, egal bei welchem der beiden line edits soll sogleich die summe überprüft werden können. hoffe ihr versteht mich.
hier mein code. vergesst hierbei, das auch werte an das übergeordnete fenster übergeben werden. das ist hier nicht wichtig. das endziel soll dann sein, dass jedesmal wenn die summe 1 im label ("Sum") erscheint, auch der OK button ausgelöst werden kann, ansonsten soll dieser grau hinterlegt werden. das hab ich jedoch noch nicht rein programmiert. ich glaube mein code funktioniert so weit, aber das problem ist, das er mir beim label keine zahlenwerte anzeigt.
Code: Alles auswählen
class SetWindowDlg(QDialog, ui_fluegasDlg.Ui_fluegasDlg):
def __init__(self, callback, parent=None):
super(SetWindowDlg, self).__init__(parent)
widthLabel = QLabel("&Width:")
lengthLabel = QLabel("Length")
sumLabel = QLabel("Sum")
self.widthlineedit = QLineEdit("0")
self.lengthlineedit = QLineEdit("0")
self.sumAnzeige = QLabel("str(self.widthlineedit+self.lengthedit)")
widthLabel.setBuddy(self.widthlineedit)
self.widthlineedit.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
self.lengthlineedit.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
self.sumAnzeige.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
okButton = QPushButton("OK")
cancelButton = QPushButton("Cancel")
buttonLayout = QHBoxLayout()
buttonLayout.addStretch()
buttonLayout.addWidget(okButton)
buttonLayout.addWidget(cancelButton)
layout = QGridLayout()
layout.addWidget(widthLabel, 0, 0)
layout.addWidget(lengthLabel, 1,0)
layout.addWidget(self.widthlineedit, 0, 1)
layout.addWidget(self.lengthlineedit, 1,1)
layout.addWidget(sumLabel, 2,0)
layout.addLayout(buttonLayout, 3, 0, 1, 3)
self.setLayout(layout)
self.connect(okButton, SIGNAL("clicked()"),
self, SLOT("accept()"))
self.connect(cancelButton, SIGNAL("clicked()"),
self, SLOT("reject()"))
self.connect(self.widthlineedit,
SIGNAL("textEdited(QString)"), self.checkAndFix)
self.connect(self.lengthlineedit,
SIGNAL("textEdited(QString)"), self.checkAndFix)
self.setWindowTitle("test window2")
def checkAndFix(self):
try:
if float(self.widthlineedit) and float(self.lengthlineedit):
self.widthlineedit = float(self.widthlineedit)
self.lengthedit = float(self.lengthedit)
sum = str(self.widthlineedit+self.lengthlineedit)
self.sumAnzeige.setText("sum")
except:
self.sumAnzeige.setText("Width = no conversation possible<br>")
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.width = 8.0
invokeButton = QPushButton("invoke flue gas widget")
self.label = QLabel("it is just to define a label")
layout = QVBoxLayout()
layout.addWidget(invokeButton)
layout.addWidget(self.label)
self.setLayout(layout)
self.connect(invokeButton, SIGNAL("clicked()"),
self.setnewwidget)
self.setWindowTitle("test")
self.updateUi()
self.updateData()
def updateUi(self): #how to convert unicode into float numbers
try:
if float(self.width):
self.width = float(self.width)
except:
self.label.setText("Width = no conversation possible<br>")
def updateData(self):
self.label.setText("Width = %s<br>" % (self.width))
def setnewwidget(self):
dialog = SetWindowDlg(self)
dialog.widthlineedit.text()
if dialog.exec_():
self.width = dialog.widthlineedit.text()
self.updateData()
self.updateUi()
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()