Поскольку при инициализации класса значение ongoing
равно False, сигнал нажатия кнопки подключается к click_one()
. Подключите кнопку к начальному слоту, а затем вызовите нужную функцию на основе значения ongoing
.
class Stuff(pyqt.QWidget):
def __init__(self):
super().__init__()
self.windows()
def windows(self):
w = pyqt.QWidget()
layout = pyqt.QGridLayout()
self.setLayout(layout)
button = pyqt.QPushButton('click me', w)
layout.addWidget(button)
button.clicked.connect(on_click)
self.show()
w.show()
def on_click():
global ongoing
if not ongoing:
click_one()
else:
click_two()
Я предлагаю переписать код с функциями и ongoing
переменной, принадлежащими классу. QWidget, назначенный переменной w
, кажется избыточным, потому что QPushButton затем добавляется в макет класса, поэтому его родительский элемент в любом случае изменяется.
class Stuff(pyqt.QWidget):
def __init__(self):
super().__init__()
self.ongoing = False
self.windows()
def windows(self):
layout = pyqt.QGridLayout(self)
button = pyqt.QPushButton('click me')
layout.addWidget(button)
button.clicked.connect(self.on_click)
self.show()
def on_click(self):
self.click_one() if not self.ongoing else self.click_two()
self.ongoing = not self.ongoing
def click_one(self):
print('one')
def click_two(self):
print('two')
Также вас может заинтересовать использование проверяемая кнопка .