43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from PyQt5.QtWidgets import QPushButton
|
|
from PyQt5.QtCore import pyqtSlot
|
|
|
|
class DoubleTextButton(QPushButton):
|
|
def __init__(self, parent = None):
|
|
super().__init__(parent)
|
|
self.clicked.connect(self.__manage_click)
|
|
|
|
def set_texts(self, text_a, text_b):
|
|
self.__text_a = text_a
|
|
self.__text_b = text_b
|
|
|
|
def set_slave_filters(self, simple_ones = None,
|
|
radio_1 = None,
|
|
ruled_by_radio_1 = None,
|
|
radio_2 = None,
|
|
ruled_by_radio_2 = None):
|
|
self.__simple_ones = simple_ones
|
|
self.__ruled_by_radio_1 = ruled_by_radio_1
|
|
self.__radio_1 = radio_1
|
|
self.__ruled_by_radio_2 = ruled_by_radio_2
|
|
self.__radio_2 = radio_2
|
|
|
|
@pyqtSlot()
|
|
def __manage_click(self):
|
|
if self.isChecked():
|
|
self.setText(self.__text_b)
|
|
enable = False
|
|
else:
|
|
self.setText(self.__text_a)
|
|
enable = True
|
|
for f in self.__simple_ones:
|
|
f.setEnabled(enable)
|
|
radio_btns = self.__radio_1, self.__radio_2
|
|
ruled_widgets = self.__ruled_by_radio_1, self.__ruled_by_radio_2
|
|
for radio_btn, ruled_by in zip(radio_btns, ruled_widgets):
|
|
if ruled_by:
|
|
for f in ruled_by:
|
|
if radio_btn.isChecked():
|
|
f.setEnabled(enable)
|
|
else:
|
|
f.setEnabled(False)
|