PyQt GUI-öffnen von 2. Fenster
Verfasst: Donnerstag 21. April 2011, 16:23
hallo
ich bin gerade dabei meine erste gui zu erstellen, und habe daher nicht wirklich viel ahnung wie man das am besten machen kann. ich habe nun mal eine kleine anwendung geschrieben, wo man aus einer erstellten ersten gui oberfläche (mit qt-designer) eine zweite gui oberfläche "modal" öffnet und einen wert an die 1.te übergibt. (self.cpi)
funktionieren tut das ganze so wie ich es will. aber ich möchte mich ja gerne verbessern, und daher frage ich mal euch erfahrene python profis was für verbesserungen man da vornehmen könnte. zum beispiel bin ich mir nicht sicher eine eingabe über QLineEdit zuerst in einen unicode und anschließend in eine float zahl umzuwandeln. ich habe nur gelesen das man immer den Qstring text sobald wie möglich in unicode verwandeln. nun arbeite ich aber eigntlich anschließend gar nicht mit dem text sondern will mit den eingegebenen werten lediglich eine summe bilden die sich auf 1 ergänzt. kann man das auch gleich von QString in float umwandeln. also für verbesserungsvorschläge wär ich sehr dankbar.
hier mein code
ich bin gerade dabei meine erste gui zu erstellen, und habe daher nicht wirklich viel ahnung wie man das am besten machen kann. ich habe nun mal eine kleine anwendung geschrieben, wo man aus einer erstellten ersten gui oberfläche (mit qt-designer) eine zweite gui oberfläche "modal" öffnet und einen wert an die 1.te übergibt. (self.cpi)
funktionieren tut das ganze so wie ich es will. aber ich möchte mich ja gerne verbessern, und daher frage ich mal euch erfahrene python profis was für verbesserungen man da vornehmen könnte. zum beispiel bin ich mir nicht sicher eine eingabe über QLineEdit zuerst in einen unicode und anschließend in eine float zahl umzuwandeln. ich habe nur gelesen das man immer den Qstring text sobald wie möglich in unicode verwandeln. nun arbeite ich aber eigntlich anschließend gar nicht mit dem text sondern will mit den eingegebenen werten lediglich eine summe bilden die sich auf 1 ergänzt. kann man das auch gleich von QString in float umwandeln. also für verbesserungsvorschläge wär ich sehr dankbar.
hier mein code
Code: Alles auswählen
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import ui_fluegasDlg_vol
import ui_OrcDlg
class Fluegas_vol(QDialog, ui_fluegasDlg_vol.Ui_fluegasDlg_vol):
def __init__(self, parent=None):
super(Fluegas_vol, self).__init__(parent)
self.setupUi(self)
if not MAC:
self.okButton.setFocusPolicy(Qt.NoFocus)
self.cancelButton.setFocusPolicy(Qt.NoFocus)
self.connect(self.N2_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.O2_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.H2_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.Ar_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.CH4_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.CO_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.CO2_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.H2O_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.SO_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.SO2_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.SO3_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.H2S_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.NO_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.NO2_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
self.connect(self.Ne_lineedit,
SIGNAL("textEdited(QString)"), self.update_values)
def update_values(self):
try:
text0 = unicode(self.N2_lineedit.text())
text1 = unicode(self.O2_lineedit.text())
text2 = unicode(self.H2_lineedit.text())
text3 = unicode(self.Ar_lineedit.text())
text4 = unicode(self.CH4_lineedit.text())
text5 = unicode(self.CO_lineedit.text())
text6 = unicode(self.CO2_lineedit.text())
text7 = unicode(self.H2O_lineedit.text())
text8 = unicode(self.SO_lineedit.text())
text9 = unicode(self.SO2_lineedit.text())
text10= unicode(self.SO3_lineedit.text())
text11= unicode(self.H2S_lineedit.text())
text12= unicode(self.NO_lineedit.text())
text13= unicode(self.NO2_lineedit.text())
text14= unicode(self.Ne_lineedit.text())
text = [text0,text1,text2,text3,text4,text5,text6,text7,text8,text9,text10,text11,text12,text13,text14]
self.sum = 0
for i in range(len(text)):
self.sum = self.sum + float(text[i])
self.Sumcalculated_label.setText(str(self.sum))
self.updateUi()
except:
self.Sumcalculated_label.setText("set correct values")
self.okButton.setEnabled(False)
def updateUi(self):
if round(float(unicode(self.Sumcalculated_label.text())),5) == 1.00000:
self.okButton.setEnabled(True)
else:
self.okButton.setEnabled(False)
class main_OrcDlg(QDialog,ui_OrcDlg.Ui_OrcDlg):
def __init__(self, parent=None):
super(main_OrcDlg, self).__init__(parent)
self.setupUi(self)
if not MAC:
self.VolButton.setFocusPolicy(Qt.NoFocus)
self.MassButton.setFocusPolicy(Qt.NoFocus)
self.cpi = 0.0
self.connect(self.VolButton, SIGNAL("clicked()"),self.open_fluegasDlg_vol)
self.updateData()
def updateData(self):
self.cpi_label.setText("cpi = %s<br>" % (self.cpi))
def open_fluegasDlg_vol(self):
fluegas_vol = Fluegas_vol(self)
if fluegas_vol.exec_():
self.cpi = fluegas_vol.N2_lineedit.text()
self.updateData()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = main_OrcDlg()
main.show()
app.exec_()