Странное поведение параметров по умолчанию функций при использовании 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