__blackjack__ hat geschrieben: Samstag 10. Oktober 2020, 14:42......Den Wert bindet man dann per `functools.partial()` und den Rückgabewert davon verbindet man mit dem `stateChanged`-Signal.
................ Ich würde auch generell keinen Quelltext aus der *.ui-Datei generieren, sondern die zur Laufzeit im Programm laden. Siehe das `PyQt5.uic`-Modul.
Ich habe versucht deine Tipps zu befolgen:
1: Die
*.ui Datei wird durch> from PyQt5.uic import loadUi / loadUi('
test.ui', self) in eine
*.py Datei geladen/importiert.
2: `functools.partial()` und `stateChanged`-Signal wird wie folgt angewendet >
Code: Alles auswählen
from functools import partial
self.radioButton1.clicked.connect(partial(self.checkRadioButtonState))
for i in range(1, 5):
radioButton = self.findChild(QRadioButton, 'radioButton' + str(i))
radioButton.clicked.connect(partial(self.checkRadioButtonState, i))
def checkRadioButtonState(self, i):
radioButton = self.findChild(QRadioButton, 'radioButton' + str(i))
Das ganze sieht so aus>
Code: Alles auswählen
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QRadioButton
from PyQt5.uic import loadUi
from functools import partial
class CodeCreator(QMainWindow):
def __init__(self):
super(CodeCreator, self).__init__()
loadUi('test.ui', self)
self.radioButton1.clicked.connect(partial(self.checkRadioButtonState))
for i in range(1, 5):
radioButton = self.findChild(QRadioButton, 'radioButton' + str(i))
radioButton.clicked.connect(partial(self.checkRadioButtonState, i))
def checkRadioButtonState(self, i):
radioButton = self.findChild(QRadioButton, 'radioButton' + str(i))
if self.radioButton1.isChecked():
file = open("output.txt", "a")
file.write("Code für: " + self.radioButton1.text() + "\n")
file.close()
self.groupBoxCode.setTitle("Code für: " + self.radioButton1.text())
if self.radioButton2.isChecked():
file = open("output.txt", "a")
file.write("Code für: " + self.radioButton2.text() + "\n")
file.close()
self.groupBoxCode.setTitle("Code für: " + self.radioButton2.text())
if self.radioButton3.isChecked():
file = open("output.txt", "a")
file.write("Code für: " + self.radioButton3.text() + "\n")
file.close()
self.groupBoxCode.setTitle("Code für: " + self.radioButton3.text())
if self.radioButton4.isChecked():
file = open("output.txt", "a")
file.write("Code für: " + self.radioButton4.text() + "\n")
file.close()
self.groupBoxCode.setTitle("Code für: " + self.radioButton4.text())
FILENAME = "output.txt"
if __name__ == '__main__':
app = QApplication(sys.argv)
cc = CodeCreator()
cc.show()
app.exec_()
Jetzt meine Frage:
1: Ist es so richtig umgesetzt?
2: Kann man es noch weiter verkleinern/ kombinieren? Es sind ja doch fast immer die selben befehle die ausgeführt werden, wenn man den entsprechenden radioButton drückt.
3: Eventuell eine alternative dazu?
Bitte Hilfe! Viel Dank im Voraus!