Засорина Галина Геннадьевна,
учитель информатики
МАОУ «Средняя общеобразовательная школа №2»
город Сухой Лог Свердловской области
«Создание приложений с помощью Kivy»
Конспект внеурочного занятия по программированию
Тип урока: урок изучения нового материала и первичного закрепления знаний и умений.
Цель:
организация деятельности учащихся для формирования и развития навыков учащихся программирования на языке Python;
способствовать развитию познавательной активности учащихся, интереса к предмету, развитию логического и алгоритмического мышления;
способствовать формированию навыков самоконтроля, самостоятельности, ответственности.
Планируемые результаты:
Предметные УУД: формирование навыков, умений строить алгоритмы на языке Python, находить ошибки в алгоритмах, записанных на языке Python
Метапредметные УУД: формирование умений самостоятельно планировать пути достижения целей; умений соотносить свои действия с планируемыми результатами, осуществлять контроль своей деятельности, определять способы действий в рамках предложенных условий, корректировать свои действия в соответствии с изменяющейся ситуацией; умение оценивать правильность выполнения учебной задачи.
Личностные УУД: алгоритмическое мышление, необходимое для профессиональной деятельности в современном обществе; представлений о программировании как сфере возможной профессиональной деятельности; воспитания культуры общения на уроке и в повседневной жизни, осознание собственной успешности, стремление к победе, умение работать в группе.
Формирование Универсальных Учебных Действий (УУД):
Личностные: установление связи между целью и мотивом деятельности;
Регулятивные: целеполагание, составление плана и последовательности действий, оценка результата;
Познавательные: самостоятельное формулирование цели, поиск необходимой информации, умение структурировать знания;
Коммуникативные: умение слушать и вступать в диалог, выражать свои мысли.
Методы обучения: интерактивный, практический, словесный, демонстрация, репродуктивный.
Оборудование и дидактический материал:
класс, оборудованный ПК
интерактивная доска, проектор;
демонстрационный материал – презентация;
План урока:
Орг.момент.
Мотивация.
Изучение нового материала.
Первичное закрепление изученного материала
Выполнение практических работ(№1 и №2)
Подведение итогов.
Ход урока
Этап урока, цель этапа | Деятельность учителя | Деятельность ученика | Формируемые УУД |
1. Орг. момент | Приветствие, проверка присутствующих, инструктаж по технике безопасности | Приветствие | уметь совместно договариваться о правилах поведения и общения; проявлять учебно-познавательный интерес |
2. Постановка целей урока | Сегодня мы научимся создавать приложения с помощью Kivy, давайте определим цели нашего занятия | Выдвигают предположения о целях урока. Слушают одноклассников, учителя. | осуществлять самоконтроль понимания темы урока и цели урока. |
Мотивация | Для мотивации и актуализации нового материала демонстрируется ролик, его можно скачать по ссылке https://clck.ru/34wWSY (оригинал видео находится https://youtu.be/a8RXdWeeO9I) | Просмотр видео | установление связи между целью и мотивом деятельности |
3. Изучение нового материала Установка Kivy | Создание любого приложения базируется на использовании программных объектов. Каждый объект обладает определенным набором свойств и может использовать определенные методы обработки данных, также он может реагировать на внешние события. Нам потребуется в linux: • стандартный пакетный менеджер pip • программа для написания кода Python • для среды разработки воспользуемся PyCharm Откроем Pycharm, создадим проект App и в терминале пропишите команду pip install kivy Увидим, как распаковывается Kivy и теперь библиотека Kivy готова к использованию. (А вот так выполнить в windows - https://yandex.ru/video/preview/18150753649649904749) | Учащиеся выполняют по инструкции | анализировать визуальную информацию самоконтроль процесса выполнения задания |
4. Первичное закрепление изученного материала | Для начала установим Kivy (команды описана выше) Первая программа на фреймворке Kivy После установки, проверим работоспособность kivy, создав простое первое приложение, которое выведет нам Привет мир! Создадим файл hello.py со следующим содержимым: from kivy.app import App from kivy.uix.label import Label class MainApp(App): def build(self): label = Label(text='Привет мир!') return label if __name__ == '__main__': app = MainApp() app.run() Запускаем и видим наше приложение | Получают результат | понимать и сохранять учебную задачу |
Практические работы №1 и №2.
Практическая работа № 1.
Сделаем отдельный файл с этой разметкой, он должен иметь расширение kv, по умолчанию метод run() будет искать с файл с именем нашего класса без App, т.е. в нашем случае main.kv
Создадим другое приложение, сначала код файла main.kv
разделим на отдельный файл с разметкой main.kv
:
Label:
text:'Привет'
Label:
text:'разработчикам'
и код main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class MainWidget(BoxLayout):
pass
class MainApp(App):
def build(self):
return MainWidget()
получили то же самое что и раньше, теперь будем работать над внешним видом
будем менять файл main.kv
MainWidget:
orientation: 'vertical'
padding:20
spacing:20
Label:
markup: True
text:'[color=000000]Привет[/color]'
canvas.before:
Color:
rgba:1,1,1,1
Rectangle:
pos:self.pos
size: self.size
Label:
text:'разработчикам'
canvas.before:
Color:
rgba:1,0,0,1
Rectangle:
pos: self.pos
size: self.size
создадим более сложное приложение: сверху картинка, поле ввода, надпись и кнопка
main.kv
:
orientation: 'vertical'
padding:20
spacing:20
Image:
source:'hello.png'
TextInput:
multiline:False
size_hint:(.5,None)
pos_hint:{'center_x':0.5,'top':1}
height:50
font_size:30
Label:
font_size: 30
text:'Как Вас зовут?'
Button:
font_size: 30
text:'Приветствие'
size_hint:(.5,None)
pos_hint:{'center_x':0.5, 'top':1}
on_press: root.say_hello()
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class MainWidget(BoxLayout):
pass
def say_hello(self):
print('текст кнопки')
class MainApp(App):
def build(self):
return MainWidget()
if __name__ == '__main__':
app = MainApp()
app.run()
Добавим, чтобы текст менялся в виджете
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class MainWidget(BoxLayout):
hello_label=ObjectProperty()
name_input=ObjectProperty()
def say_hello(self):
print('текст кнопки')
class MainApp(App):
def build(self):
return MainWidget()
if __name__ == '__main__':
app = MainApp()
app.run()
а в main.kv
:
orientation: 'vertical'
padding:20
spacing:20
name_input: name
hello_label:hello
Image:
source:'hello.png'
TextInput:
id:name
multiline:False
size_hint:(.5,None)
pos_hint:{'center_x':0.5,'top':1}
height:50
font_size:30
Label:
id:hello
font_size: 30
text:'Как Вас зовут?'
Button:
font_size: 30
text:'Приветствие'
size_hint:(.5,None)
pos_hint:{'center_x':0.5, 'top':1}
on_press: root.say_hello()
и еще
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class MainWidget(BoxLayout):
hello_label=ObjectProperty()
name_input=ObjectProperty()
def say_hello(self):
self.hello_label.text='Привет! '+self.name_input.text
class MainApp(App):
def build(self):
return MainWidget()
if __name__ == '__main__':
app = MainApp()
app.run()
Практическая работа № 2.
Создадим приложение Калькулятор, который будет поддерживать следующие операции:
• Сложение;
• Вычитание;
• Умножение;
• Деление.
В данном приложении будет использован набор кнопок. В верхней части также будет специальный блок для вывода операций и их результатов.
Часть кода1
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
class MainApp(App):
def build(self):
self.operators = ["/", "*", "+", "-"]
self.last_was_operator = None
self.last_button = None
main_layout = BoxLayout(orientation="vertical")
self.solution = TextInput(multiline=False, readonly=True, halign="right", font_size=55)
main_layout.add_widget(self.solution)
buttons = [["7", "8", "9", "/"],["4", "5", "6", "*"],["1", "2", "3", "-"],[".", "0", "C", "+"],]
for row in buttons:
h_layout = BoxLayout()
for label in row:
button = Button(text=label, pos_hint={"center_x": 0.5, "center_y": 0.5})
button.bind(on_press=self.on_button_press)
h_layout.add_widget(button)
main_layout.add_widget(h_layout)
equals_button = Button(text="=", pos_hint={"center_x": 0.5, "center_y": 0.5})
equals_button.bind(on_press=self.on_solution)
main_layout.add_widget(equals_button)
return main_layout
Калькулятор работает следующим образом:
создается список, виджет TextInput, создается вложенный список из списков, где есть большая часть кнопок для калькулятора с цифрами. Кнопки связываются обработчиком событий, после чего кнопки добавляются к горизонтальному BoxLayout. Создается кнопка равно (=) и привязывается к обработчику событий.
Добавим обработчик событий .on_button_press()
Часть кода2
def on_button_press(self, instance):
current = self.solution.text
button_text = instance.text
if button_text == "C":
self.solution.text = ""
else:
if current and (self.last_was_operator and button_text in self.operators):
return
elif current == "" and button_text in self.operators:
return
else:
new_text = current + button_text
self.solution.text = new_text
self.last_button = button_text
self.last_was_operator = self.last_button in self.operators
Почти все виджеты приложения вызывают .on_button_press().
Это работает следующим образом:
принимает аргумент instance, в результате чего можно узнать, какой виджет вызвал функцию.
извлекают и хранят значения solution и text кнопки.
проверяют, на какую кнопку нажали. Если пользователь нажимает С, тогда очищается solution. В противном случае используется утверждение else.
проверяет, было ли у решения предыдущее значение.
проверяют, была ли последняя нажатая кнопка оператором.
Последней частью кода будет .on_solution():
Часть кода 3
def on_solution(self, instance):
text = self.solution.text
if text:
solution = str(eval(self.solution.text))
self.solution.text = solution
Здесь берется текущий текст из solution и используется встроенный в Python eval() для исполнения
Этап урока, цель этапа | Деятельность учителя | Деятельность ученика | Формируемые УУД |
6. Подведение итогов | Акцент на основных моментах, используемых библиотеках и модулях | Демонстрация результата, отвечают на вопросы учителя | Осуществлять оценивание своей деятельности |
Интернет-источники
Kivy Python https://tretyakov.net/post/kivy-python
Kivy учебник, начало работы с kivy https://learntutorials.net/ru/kivy/topic/2101/%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-kivy
Создание вашего первого приложения на Python - https://translated.turbopages.org/proxy_u/en-ru.ru.76e302ca-64ab94fb-82404286-74722d776562/https/www.geeksforgeeks.org/creating-your-first-application-in-python/
Создание приложений https://python-scripts.com/kivy-android-ios-exe#apk-andr
Учебное пособие по Kivy - https://translated.turbopages.org/proxy_u/en-ru.ru.e060e59e-64ab86c5-413bc0f8-74722d776562/https/www.geeksforgeeks.org/kivy-tutorial/
Источники иллюстраций
Иллюстрации получены с помощью снимка экрана (ScreenShot) созданных приложений