Ausführen einer Funktion durch eine für Schleife mit einer Änderung des Index in einer Variablen [Duplikat] ausführen
Posted: 05 Apr 2025, 11:22
Es gibt 20 Kontrollkästchen im Fenster des Benutzers. Im Code ist der Name Checkbox_1, CheckBox_2, ... CheckBox_20. Um alle Kontrollkästchen gleichzeitig zu aktivieren, verwende ich diesen Algorithmus: < /p>
Code: Select all
def select_all_W(self):
self.Ui.checkBox_1.setChecked(True)
self.Ui.checkBox_2.setChecked(True)
# .................................
self.Ui.checkBox_20.setChecked(True)
< /code>
Dies macht den Code sehr groß und schwer. Ist es möglich, dasselbe durch eine Funktion oder beispielsweise durch eine Schleife zu tun: < /p>
for i in range 20
self.Ui.checkBox_[i].setChecked(True)
< /code>
Mit anderen Worten können Sie die Aktivierung einer großen Anzahl von Fensterelementen vereinfachen?class Win_menu(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.Ui = Ui_MainWindow()
self.Ui.setupUi(self)
self.show()
self.Ui.pushButton_3.clicked.connect(self.select_all_W)
self.Ui.pushButton_4.clicked.connect(self.select_all_W)
self.Ui.pushButton_5.clicked.connect(self.select_all_A)
self.Ui.pushButton_6.clicked.connect(self.select_all_A)
def win_dlg(self):
self.setup_games()
self.Win_menu4 = Win_menu4()
self.Win_menu4.show()
def setup_games(self):
global warriors, magics, scouts, healers, special_W, special_M, special_S, special_H, leutents, cardOL, base_cardOl
if self.Ui.checkBox_1.isChecked():
warriors.extend(hero_B_W)
magics.extend(hero_B_M)
....
if self.Ui.checkBox_9.isChecked():
warriors.append('Karnon')
if self.Ui.checkBox_10.isChecked():
warriors.append('korbin')
if self.Ui.checkBox_11.isChecked():
warriors.append('Kruzbek')
def select_all_A(self):
self.Ui.checkBox_49.setChecked(True)
self.Ui.checkBox_50.setChecked(True)
self.Ui.checkBox_51.setChecked(True)
def reset_all_A(self):
self.Ui.checkBox_49.setChecked(False)
self.Ui.checkBox_50.setChecked(False)
self.Ui.checkBox_51.setChecked(False)
hero_B_W = ['Grisban', 'Sindrael']
hero_B_M = ['Tarcha', 'Leorik']
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Win_menu()
window.show()
sys.exit(app.exec_())