TupaBan
@TupaBan
Начинающий разработчик на Python.

Как сделать кнопку которая будет сохранять себя типо on/off?

Как сделать кнопку которая будет сохранять настройки для каждого пользователя. Например у меня есть кнопка on при нажатии на которую она превратится в off и будет сохранять своё состояние для каждого пользователя
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@mkone112
Начинающий питонист.
Я не работал с телеграмом, но безотносительно него(и даже Python) существует множество способов сохранения состояния:
  • Глобальные переменные:
    button_pressed = False
    
    
    			def press_button():
    				global button_pressed
    				if button_pressed:
    					button_pressed = False
    				else:
    					button_pressed = True
    
    					
    			press_button()
    			button_pressed    # True
    			press_button()
    			button_pressed()  # False


  • Атрибуты функций:
    def press_button():
    			if hasattr(press_button, 'pressed'):
    				press_button.pressed = not press_button.pressed
    			else:
    				press_button.pressed = True
    			return press_button.pressed
    
    
    		press_button() 			# True
    		# Значение атрибута доступно через dot-notation
    		press_button.pressed 	# True
    		press_button() 			# False


  • Изменяемые аргументы по умолчанию:
    def press_button(*, _pressed=[False]):
    			_pressed[0] = not _pressed[0]
    			return _pressed[0]
    		
    		
    		press_button()	# True
    		press_button()  # False


  • Замыкания:
    def button_factory():
    			pressed = False
    			
    			def press_button():
    				nonlocal pressed
    				pressed = not pressed
    				return pressed
    
    			return press_button
    		
    		
    		button = button_factory()
    		button()	# True
    		button()	# False


  • Самый очевидный это классы:
    class Button:
    		def __init__(self):
    			self._pressed = False
    		
    		def __call__(self):
    			return self._press()
    		
    		def _press(self):
    			self._pressed = not self._pressed
    			return self._pressed
    	
    	
    	button = Button()
    	button()	# True
    	button()	# False


  • etc...


Буду рад если мой вопрос поправит/дополнит реальными примерами кто-то более разумный.
UPD: Привел тривиальные примеры, так как мой ответ неожиданно показался автору полезным.(CAUTION: возможно это жуткий говнокод - тк программист из меня такой-же.)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 130 000 ₽
deeplay Новосибирск
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
26 окт. 2020, в 10:42
30000 руб./за проект
26 окт. 2020, в 10:27
30000 руб./за проект
26 окт. 2020, в 10:18
50000 руб./за проект