FanaticExplorer
@FanaticExplorer
чел

Как сделать так, что бы кнопка вызывала функцию с аргументом?

Делаю свои первые шаги в kivy. Пытаюсь создать просто 4 кнопки, каждая просто нажимает стрелки на клавиатуре при помощи pyautogui.

Код:
# Импорт всех классов
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window

import pyautogui as pag


class MyApp(App):
	
	# Создание всех виджетов (объектов)
	def __init__(self):
		# Глобальные настройки
		self.title = 'Controller'
		
		super().__init__()
		self.btn_left=Button(text="Left", background_color ="c24b99")
		self.btn_down=Button(text="Down", background_color="00ffff")
		self.btn_up=Button(text="Up", background_color="12fa05")
		self.btn_right=Button(text="Right", background_color="f9393f")

	# Основной метод для построения программы
	def build(self):
		# Все объекты будем помещать в один общий слой
		box = BoxLayout()


		box.add_widget(self.btn_left)
		box.add_widget(self.btn_down)
		box.add_widget(self.btn_up)
		box.add_widget(self.btn_right)


		return box


# Запуск проекта
if __name__ == "__main__":
	MyApp().run()


Можно ли сделать так, что бы все эти кнопки управлялись одной и той же функцией, но с разным аргументом?

P.S. Работаю в Visual Studio Code, версия Python - 3.9.10, а kivy - 2.0.0.
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
gnifajio
@gnifajio
Совершенствуюсь каждый день
self.btn_left .bind(on_press = lambda: pyautogui.press("left"))
self.btn_down .bind(on_press = lambda: pyautogui.press("down"))
self.btn_up   .bind(on_press = lambda: pyautogui.press("up"))
self.btn_right.bind(on_press = lambda: pyautogui.press("right"))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы