Ваша текущая логика делает невозможным выход из цикла, так как pressed
не изменяется внутри цикла.Существует not оператор, который проверяет, нажата ли мышь: ваши единственные if
операторы проверяют, была ли нажата мышь при входе в функцию.pressed
не изменяется внутри функции.
Посмотрите на критическую логику:
if pressed == True:
while ...
...
if pressed == False:
break
Здесь нет ничего, чтобы изменить значение pressed
;первый if
гарантирует, что он True
в любом месте цикла.
Да, вам нужно настроить другого слушателя, который работает в цикле.Вы уже знаете строительные блоки: создайте новый внутри функции и свяжите его с другой операцией, которая прерывает цикл.Например, вы можете «обмануть» и сбросить pressed
в качестве глобальной переменной.
Вы также можете изучить, как это сделать, в других ответах, если вы хотите общее решение для обработчика.нажатие клавиш и освобождение клавиш выполнялись достаточно часто.