Странное поведение параметров по умолчанию функций при использовании pyqt

Вот суть проблемы при импортированном pyqt при использовании пустых параметров по умолчанию в функциях соответствующие аргументы принимают тип bool и соответственно становятся фактически бесполезны

import sys
from PyQt5 import QtWidgets, QtCore

def test(s = ('',''),d=None):
    print('d=', d)
    print('s=', s)
    textEdit.setText(s[0])

app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
textEdit = QtWidgets.QTextEdit()
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(textEdit)
btn = QtWidgets.QPushButton('ok')
btn.clicked.connect(test)
vbox.addWidget(btn)
window.setLayout(vbox)
window.show()
sys.exit(app.exec_())

т.е функция print выдает false, false, а попытка вставить пустую строку из кортежа s ошибку:

Traceback (most recent call last): File "test5.py", line 12, in test textEdit.setText(s[0]) TypeError: 'bool' object is not subscriptable

как победить это страное поведение без прыжков с подвыподвертом?

Проблема вроде решилась так:

def test(A,s = ('',''),d=None):

добавлением простого параметра на первое место, правда в чем магия я не понимаю??? А магия в том что метод clicked кнопки передает параметр checked типа bool


Ответы (0 шт):