ich fange gerade an mit Python erste Erfahrungen zu machen. Ich komme von Delphi vor einigen Jahren.
Nun habe ich ein Testprogramm mit den Erfahrungen gemacht und komme an einen Punkt nicht weiter. Ich mache ein Unterformular auf und fange die Buttonbox (im QT-Designer erstellt) ab und schicke das in eine Class um dort die Reaktionen auszuwerten. Box besteht aus OK und Abbruch.
Funktioniert - aber die Ausgabe Print Ok oder Print Abbruch kommt immer sovielmal, wie ich das Unterformular wieder öffne. Also beim ersten Öffnen gar keine Ausgabe - bei zweiten mal ein OK oder Abbruch bei dritten mal zwei OK oder Abbruch usw. Mir kommt es vor als würde das Unterformular gar nicht geschlossen - und immer wieder eine Kopie geöffnet? Aber alles was nach unterformular.exec_() steht wird ausgeführt. Extra dafür die Slider reaktion und die LED-green dafür eingefügt, um das zu testen.
Ich danke erstmal für eure Mühe an meine blöde Frage.
Code: Alles auswählen
import sys
"""import der Paramenter von QT"""
from PyQt5 import QtWidgets, QtCore, QtGui, uic
"""Klassen definieren"""
app = QtWidgets.QApplication(sys.argv)
"""Öffnen des Unterformular und die Ereignisse"""
class Unterform():
unterformular = uic.loadUi("test2.ui")
class MM():
def Print(self):
print("OK")
class BB():
def Print(self):
print("Abbruch")
"""Öffnen des Hauptformulars und die Ereignisse"""
class Hauptformular(QtWidgets.QDialog):
def __init__(self, parent=None):
super().__init__(parent)
""" 1. Laden des Formulars mit name led.ui und der Classe meinMenue übergeben
2. Lade den toolButton1 und warete auf sein Klick und gehe dann in die Funktion onOK
3. Frage den verticalSlider auf Änderung ab und gehe dann in die Funktion/Motul SL
"""
self.ui = uic.loadUi("led.ui", self)
self.ui.toolButton1.clicked.connect(self.onOK)
"""Button mit blauer LED Starten """
self.ui.toolButton1.setIcon(QtGui.QIcon('blue-led-on.png'))
self.ui.verticalSlider_1.valueChanged.connect(self.SL)
self.ui.verticalSlider_2.valueChanged.connect(self.SL)
self.ui.verticalSlider_3.valueChanged.connect(self.SL)
""" Dem vertikalSlider_1 den Wert 23 übergeben bei Buttondrücken -OK und Unterformular"""
def onOK(self):
"""Button mit roter LED bei Button Click """
self.ui.toolButton1.setIcon(QtGui.QIcon('led-red-on.png'))
self.ui.verticalSlider_1.setValue(23)
Unterform.unterformular.exec_() # Kein self weil nicht zur class MeinMenue gehört sondern außerhalb der Klasse
self.ui.verticalSlider_1.setValue(0)
"""Button mit grün LED bei beenden des Unterfensters """
self.ui.toolButton1.setIcon(QtGui.QIcon('green-led-on.png'))
"""Buttonbox im Untermenue abfangen und auf OK oder Abbruch prüfen """
Unterform.unterformular.buttonBox.accepted.connect(MM1.Print)
Unterform.unterformular.buttonBox.rejected.connect(BB1.Print)
""" vertikalSlider_1 bis _3 Wert lesen und den Wert an die Variable a bis c übergeben sowie den Wert in der Konsole ausgeben """
def SL(self):
self.a = self.ui.verticalSlider_1.value()
self.b = self.ui.verticalSlider_2.value()
self.c = self.ui.verticalSlider_3.value()
print(" Das ist die erste Variable - Werte des Sliders_1 = ",self.a)
print(" Das ist die erste Variable - Werte des Sliders_2 = ",self.b)
print(" Das ist die erste Variable - Werte des Sliders_3 = ",self.c)
MM1 = MM()
BB1 = BB()
dialog = Hauptformular()
dialog.show()
sys.exit(app.exec_())