Ich bin ganz neu im Python programmieren und habe mich für Qt als Gui-Entwicklung entschieden, aufgrund der vielfältigen Möglichkeiten.
Nun stehe ich vor einem kleinem Problem, welches sich jedoch als sehr komplex herausstellt:
Ich habe mehrere LineEdit-Widgets, deren textChanged()-Signale ich zur Laufzeit auf Korrektheit (es dürfen nur in float umwandelbare Strings eingegeben werden) überprüfen möchte. Ich möchte aber beim Überprüfen wissen, welches Widget ich da überprüfe. Also eine Identifizierung des über die "connection" verbundenen Objektes.
Mein Code sieht folgendermaßen aus:
Code: Alles auswählen
import sys
from PyQt4 import QtGui, uic
class MeinLineEditDialog(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = uic.loadUi("LineEditUI.ui")
self.ui.show()
self.ui.lineEdit_1.textChanged.connect(self.CeckFloat)
self.ui.lineEdit_2.textChanged.connect(self.CeckFloat)
self.ui.lineEdit_3.textChanged.connect(self.CeckFloat)
self.ui.lineEdit_4.textChanged.connect(self.CeckFloat)
def CeckFloat(self, text):
try:
if len(text) > 0:
float(text)
self.ui.statusbar.showMessage("To Float")
except:
self.ui.statusbar.showMessage("no Float @" + str(self.ui.widget.objectName) )
if __name__=="__main__":
app=QtGui.QApplication(sys.argv)
dings=MeinLineEditDialog()
sys.exit(app.exec_())
Dafür müsste ich aber wohl der CheckFloat-Methode das connectete Widget als Parameter mit übergeben. Wie kann ich das bewerkstelligen??
das
Code: Alles auswählen
str(self.ui.widget.objectName)
Ich hoffe auf Eure Hilfe bei dem Problem!
Die Ui würd ich gerne anhängen aber das geht hier im Forum wohl nicht. Ich finds auf jeden Fall nicht.
Dann hier der Code "LineEditUI.ui":
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>216</width>
<height>215</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>7</x>
<y>17</y>
<width>148</width>
<height>128</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_4"/>
</item>
</layout>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>216</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>