В настоящее время я переключаюсь с использования Tk в моих скриптах Python на PyQt для запуска некоторых простых графических интерфейсов. Они предназначены для предоставления функций, которые будут сохранены позже в файле вместе с некоторыми данными, которые будут собраны после запуска другого скрипта (отдельная кнопка, которую я пока не использовал). Сейчас я не могу понять, как изменить текст некоторых кнопок в зависимости от ввода пользователя. Чтобы быть более точным, я хотел бы отображать те же кнопки, но либо с BTNS = ["1", "2", ... "8"], либо с BTNS = ["9", "10", ... "16 «], в зависимости от ввода другой кнопки (« Вправо »и« Влево »). Я пробовал разные подходы (получение информации из findChildren внутри группы, использование deleteLater, использование аргумента clicked и т. Д.), Но ничто не дает искомого результата.
Вот MWE моей проблемы.
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont
class App(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(50, 50, 600, 500)
self.initUI()
def initUI(self):
self.MainLayout = QVBoxLayout(self)
self.lbl1 = QLabel(self)
self.lbl1.setText('Test1:')
self.lbl1.move(50, 80)
self.MainLayout.addWidget(self.lbl1)
self.MainLayout.addWidget(self.addSideButtons())
self.btnGroup2 = QButtonGroup(self)
self.MainLayout.addWidget(self.StimButtons("left"))
self.show()
def addSideButtons(self):
self.btnGroup1 = QButtonGroup()
self.button1 = QPushButton(self)
self.button2 = QPushButton(self)
self.button1.setGeometry(90, 20, 100, 30)
self.button1.setText("Left")
self.button1.setCheckable(True)
#self.button1.clicked.connect(lambda:self.StimButtons("left"))
self.button1.setChecked(True)
self.btnGroup1.addButton(self.button1)
self.button2.setGeometry(200, 20, 100, 30)
self.button2.setText("Right")
self.button2.setCheckable(True)
#self.button2.clicked.connect(lambda:self.StimButtons("right"))
self.btnGroup1.addButton(self.button2)
self.btnGroup1.setExclusive(True)
def StimButtons(self, btn):
if btn == "left":
BTNS = ["1", "2", "3", "4", "5", "6", "7", "8"]
else:
BTNS = ["9", "10", "11", "12", "13", "14", "15", "16"]
coords = [(150, 350), (80, 300), (150, 300), (220, 300),
(80, 250), (150, 250), (220, 250), (150, 200)]
for idx, contact_bts in enumerate(BTNS):
self.btn = QPushButton(contact_bts, self)
self.btn.setGeometry(coords[idx][0], coords[idx][1], 60, 45)
self.btn.setCheckable(True)
self.btnGroup2.addButton(self.btn)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())