Приветствую. Попробую объяснить задачу: есть окно, где пользователю предлагается выбрать из 3 доступных опций, в моем случае - шеллов, и применить их кнопкой Apply. Нужно каким-то образом записать значение в выбранный QRadioButton, чтобы потом применить его при нажатии на кнопку Apply (так как это будет команда для изменения шелла, то буду использовать subrocess.run и команду pkexec chsh -s «значение с QRadioButton „имя юзера“). Подскажите пожалуйста, как это правильно реализовать?
class ShellSelectWindow(QWidget):
def __init__(self):
super().__init__()
self.setFixedSize(400, 150)
self.setWindowTitle("Change shell")
self.setupUi()
vbox3 = QVBoxLayout()
vbox3.addWidget(self.groupBox3)
self.setLayout(vbox3)
self.show()
def setupUi(self):
Hlayout = QHBoxLayout()
Vlayout = QVBoxLayout()
self.groupBox3 = QGroupBox("Select shell:")
self.btnBash = QRadioButton("Bash (Default)")
self.btnBash.setChecked(True)
self.btnBash.toggled.connect(self.setBash)
self.btnZSH = QRadioButton("ZSH")
self.btnZSH.toggled.connect(self.setZSH)
self.btnFish = QRadioButton("Fish")
self.btnFish.toggled.connect(self.setFish)
self.buttonBox = QDialogButtonBox()
self.buttonBox.addButton("Apply", QDialogButtonBox.AcceptRole)
self.buttonBox.addButton("Cancel", QDialogButtonBox.RejectRole)
self.buttonBox.rejected.connect(self.cancel)
Hlayout.addWidget(self.btnBash)
Hlayout.addWidget(self.btnZSH)
Hlayout.addWidget(self.btnFish)
Vlayout.addLayout(Hlayout)
Vlayout.addWidget(self.buttonBox)
self.groupBox3.setLayout(Vlayout)
def setBash(self):
rbtn = self.sender()
if rbtn.isChecked() == True:
print("Toggled")
def setZSH(self):
rbtn = self.sender()
if rbtn.isChecked() == True:
print("Toggled")
def setFish(self):
rbtn = self.sender()
if rbtn.isChecked() == True:
print("Toggled")
def cancel(self):
self.close()