Как создать kv файл
На отметке времени в этой ссылке (1:55) парень переходит к другому созданному им файлу. Этот файл является файлом .kv. Когда я пытаюсь создать новый файл, есть несколько вариантов, но нет опции типа файла kivy. Должен ли я просто создать текстовый файл или мне чего-то не хватает?
Для записи я использую PyCharm, как и парень в видео (также я использую Mac)
Наконец, первый файл этого парня называется kivytut.py. Это просто то, что он выбрал, чтобы назвать его, или есть общепринятые имена для kivy файлов, которые люди обычно используют?
2 ответа
Как создать виджеты Kivy без использования языка kv и файлов .kv? Я новичок в kivy. Обычно я использую Tkinter, но я обнаружил, что Kivy хорош для создания Android приложений, поэтому я учусь его использовать. Я знаю, что Kivy виджета сделаны с использованием .kv файлов, но я хотел бы создать их.
В PyCharm нажмите на File > New > File или right mouse click New > File и введите customwidget.kv в качестве имени файла.
Вы можете назвать файл как kivytut.py . Но если это основная точка входа в ваше приложение Kivy, то назовите его main.py , потому что Buildozer будет искать файл с именем main.py
Ниже приведены некоторые из названий. Пожалуйста, ознакомьтесь со всеми названиями в разделе Руководство по программированию.
Все что вам нужно сделать это сделать текстовый файл Если сделать его файлом python, то получится много красных линий, из-за которых ваш код будет выглядеть плохо Просто сделайте это текстовым файлом.
Похожие вопросы:
Как использовать модуль kivy garden.graph внутри файла kv? Я нашел только документацию, которая объясняла, как использовать его в основном скрипте python. Я импортировал kivy.garden.graph в файл.
Я следовал в этом уроке , раздел Add Simple Graphics. Но у меня возникли проблемы с программой для рисования изображений. Kivy не обнаруживает файл pong.kv, и я перепробовал все, что мог придумать.
У меня та же проблема, что и описанная в этой теме, но неправильная . Когда я использую Builder и загружаю файл kv, у меня есть нормальное рабочее приложение. Но когда я пытаюсь использовать файл.
Как создать виджеты Kivy без использования языка kv и файлов .kv? Я новичок в kivy. Обычно я использую Tkinter, но я обнаружил, что Kivy хорош для создания Android приложений, поэтому я учусь его.
Я использую Kivy с webcam. Я последовал этому примеру с помощью @Arnav использования opencv для формирования и отображения камеры в виде виджета. У меня есть extended макет внутри python, чтобы.
я хочу создать ScreenManager в файле kv, но мне также нужно изменить показанный экран в файле .py. Это потому, что я должен создать некоторые кнопки динамически и привязать к ним определенную.
Я здесь новичок, надеюсь на небольшую помощь и буду очень рад этому. Я пишу небольшую программу в python, kivy и opencv. Проблема в том, что я хотел бы интегрировать свой webcam с opencv, а не через.
Я новичок в Kivy и имею следующую проблему (окружающая среда Python 3.7 с Kivy-1.11.1.): Мне нужна область навигации и область просмотра (=ViewScreen). С помощью области навигации я изменяю область.
В этой статье я отвечу на вопросы, что такое файлы с расширением .kv и для чего они нужны.
Файлы с расширением .kv находятся в папке maps, имеют такое-же название как и название карты, и само собой понятно, что они сделаны для определения и указания, модели каких игроков должны использоваться на данной карте
Файлы .kv редактируется либо блокнотом, либо другим текстовым редактором, я-же использую Notepad++
Структура файла ze_cathedral_b1_1.kv (название файла зависит от карты)
ze_cathedral_b1_1name ze_cathedral_b1_1
minplayers 1
maxplayers 64
extraspectators 2
imagename
t_arms models/weapons/t_arms.mdl
ct_arms models/weapons/ct_arms_sas.mdl
t_models
tm_professional
tm_pirate
tm_phoenix
tm_professional_var3
tm_anarchist
>
ct_models
ctm_swat
ctm_gign
ctm_st6
ctm_idf_variantB
ctm_fbi_variantA
>
>
Где всё вроде бы понятно, но
ze_cathedral_b1_1 - название карты, меняем на название вашей карты
t_arms models/weapons/t_arms.mdl - модель рук террористов
ct_arms models/weapons/ct_arms_sas.mdl - модель рук контр-террористов
tm_professional
tm_pirate
tm_phoenix
tm_professional_var3
tm_anarchist
>
выше приведён код который показывает серверу, какие модели террористов нужно использовать на данной карте
tm_professional - название модели террориста
Блок кода ниже отвечает за модели контр-террористов именно на этой карте
ct_modelsctm_swat
ctm_gign
ctm_st6
ctm_idf_variantB
ctm_fbi_variantA
>
На каждой карте в CS GO использовано по 5 моделей, не по 4, как это было в 1.6 и css. Ниже я приведу пример всех скинов команд на различных картах
Внимание, не ставьте больше 5-и моделей, всё-равно больше 5-и моделей либо за контр-террористов, либо за террористов у вас не появится!
Так-что вы с лёгкостью можете менять модели игроков на вашем сервере, при-чём ставить разные модели на разных картах.
Буквально статью тому назад, большинством голосов, было решено начать серию уроков по созданию аналога нативного приложения, написанного для Android на Java, но с помощью фреймворка Kivy + Python. Будет рассмотрено: создание и компоновка контроллов и виджетов, углубленное исследование техники разметки пользовательского интерфейса в Kv-Language, динамическое управление элементами экранов, библиотека, предоставляющая доступ к Android Material Design, и многое другое.
Заинтересовавшихся, прошу под кат!
Итак, после безуспешных поисков подопытного кролика подходящего приложения, в меру сложного (чтобы не растягивать наш туториал до масштабов Санты Барбары) и не слишком простого (дабы осветить как можно больше технических аспектов Kivy разработки), по совету хабровчанина Roman Hvashchevsky, который согласился выступить Java консультантом наших уроков (иногда в статьях я буду приводить листинги кода оригинала, написанного на Java), я был переадресован вот сюда — и выбор был сделан:
Именно на основе данного приложения будут построены наши уроки, а ближе к релизу к концу финальной статьи у нас будет свой пресмыкающийся земноводно-фруктовый тондем питона, жабы и фрукта Jabber-Python-Kivy — PyConversations и заветная apk-шечка, собранная с Python3!
Надеюсь, чаем и сигаретами вы запаслись, потому что мы начинаем! Как всегда, вам понадобиться, если еще не обзавелись, Мастер создания нового проекта для Kivy приложений. Клонируйте его в своих лабораториях, откройте корневую директорию мастера в терминале и выполните команду:
Естественно, сам фреймворк Kivy, об установке которого можно прочитать здесь. Ну, а замечательную библиотеку KivyMD для создания нативного интерфейса в стиле Android Material Design вы, конечно же, уже нашли по ссылке в репозитории Мастера создания нового проекта.
Теперь отправляйтесь на PornHub github и форкните/ клонируйте/скачайте репу PyConversations, потому что проект, который мы с вами затеяли, будет не маленький, и по ходу выхода новых статей, он будет обрастать новыми функциями, классами и файлами. В противном случае, уже во второй статье вы будете курить бамбук недоумевать, почему у вас ничего не работает.
Итак, проект создан:
Для сегодняшней статьи я взял первые четыре Activity официального приложения Conversations (Activity регистарции нового аккаунта), которые мы с вами сейчас будем создавать:
Однако прежде, чем начать, чтобы мы с вами понимали друг друга, вам стоит ознакомиться с базовыми правилами и понятиями.
Kivy это фреймворк на Python с открытым исходным кодом для разработки кроссплатформенных приложений.
Нашел этот фреймворк, когда понадобилось написать мобильное приложения для получение данных по API с сайта на Django, вроде показался не очень сложным, а главное позволил создать приложение для Android на Python.
Это не учебник и не подробная статья по Kivy, а просто пример создания приложения уровня HelloWorld.
Для начала установим Kivy, согласно официальной документации через pip это делается командой:
pip install kivy[base]
Первая программа на фреймворке Kivy
После установки, проверим работоспособность kivy создав простое первое приложение, которое выведет нам Привет мир!
Создадим файл hello.py со следующим содержимым:
Запускаем и видим наше приложение:
Каждому приложению Kivy требуется создать подкласс App и переопределить метод build(), что мы и сделали. Сюда мы поместили код, который создает виджет Label с переданным значением text.
Для нашего примера будем использовать BoxLayout, в нем все элементы располагаются друг за другом при горизонтальной ориентации или друг под другом при вертикальной.
Изменим метод build чтобы он возвращал нам не один элемент интерфейса, а слой с несколькими элементами:
Не забудем импортировать BoxLayout
from kivy.uix.boxlayout import BoxLayout
Теперь запустим и увидим нужный результат:
Все работает, но не видно где заканчивается один Label и начинается второй, я хочу поменять фон, работать с позиционированием элементов, для этого в киви существует язык разметки.
Сделаем отдельный файл с этой разметкой, он должен иметь расширение kv, по умолчанию метод run() будет искать с файл с именем нашего класса без App, т.е. в нашем случае main.kv
Перепишем пример выше, сначала код файла main.kv:
Теперь изменим код hello.py на:
Запускаем скрипт и мы должны увидеть все тоже самое, если так, то ничего не сломалось и можно продолжить.
Начнем доработку внешнего вида, для этого поменяем файл main.kv. Во первых сделаем разные цвета для наших Label и отделим их друг от друга:
Усложняем программу
Теперь сделаем программу чуть сложнее чем Helloworld, сделаем чтобы мы вводили в нее свое имя и она с нами здоровалась.
Она должна выглядеть вот так:
Сверху картинка, потом поле ввода, потом надпись, потом кнопка.
Файл шаблона (main.kv) у меня получился таким:
Сначала добавим в класс MainWidget добавим метод say_hello():
Он будет вызываться по нажатию кнопки. Для того чтобы кнопка реагировала на нажатие, добавим ей атрибут on_press, который будет вызывать метод say_hello():
Если так, то пока все работает правильно 🙂
Дальше нужно сделать, чтобы в Label менялся текст на тот, который введен в виджете TextInput.
Для этого нам нужно получить доступ к свойству text этих виджетов.
Для этого импортируем класс ObjectProperty и создадим 2 экземпляра этого класса:
Теперь откроем файл main.kv и добавим индефикаторы для виджетов Label и TextInput, чтобы на них можно было ссылаться из других частей KV файла.
Теперь установим эти индефикаторы в значения свойств hello_label и name_input, которые мы определили в методе say_hello():
Теперь мы можем получить доступ к свойству text этих виджетов, изменим методе say_hello():
Собственно все, можно запустить программу и проверить, все должно работать.
Ищете быстрый ускоренный курс по Киви? Этот пост охватывает основы приложений на Kivy.
Kivy -это кросс-платформенная платформа Python с открытым исходным кодом для разработки приложений, использующих инновационные пользовательские интерфейсы с несколькими касаниями.
Предпосылки
Чтобы работать с Kivy, вы должны быть знакомы с Python.
Содержание
В этом посте будут рассмотрены очень простые приложения (абсолютные новички в Kivy), в которых вы просто добавляете (+1) или вычитаете (-1) с помощью 2 кнопок и обновляете новое значение до метки. К концу этого урока у вас будут (я надеюсь) некоторые хорошие знания и понимание того, как работать с Kivy. Вот некоторые из вещей, которые мы рассмотрим в этом посте:
- Приступая к работе
- Метод App( ) и макет сетки в деталях
- Что такое метод build и что он делает?
- Структурирование вашего приложения
- Что такое on_release и id?
- Свойство объекта
Приступая к работе.
Хорошо, тогда давайте начнем с черного окна, которое ничего не делает.
Создать main.py файл.
и создайте файл main.kv
Текущая структура файла :
и вот оно у вас есть.
Метод App( ) и макет сетки в деталях
Давайте остановимся на секунду и посмотрим, что мы там сделали.
Одна из вещей, которую я люблю в Kivy, заключается в том, что она очень хорошо документирована, и документы очень легко понять. Посещение kivy/app.py для получения дополнительной информации. Вернемся к вопросу: зачем мы это сделали?
давайте перейдем к следующей строке:
Вы можете найти все вышесказанное по адресу: kivy/uix/gridlayout.py
Для отображения виджета требуется столбец или строка. Как мне это сделать? Еще раз, мы можем посетить документацию для получения инструкций.
Здесь говорится, что строки и cols представляют количество строк и столбцов соответственно в сетке, что приводит нас к причине, по которой мы сделали это в файле main.kv :
Все в порядке? Давайте продолжим.
Что такое метод сборки и что он делает?
Сначала давайте пройдемся по kivy/app.py файл еще раз и посмотрите, что говорится в документации:
Давайте сделаем то же самое для метода build :
Теперь мы знаем причину этого:
Надеюсь, к этому времени все немного прояснится. Однако у нас все еще есть проблема — где кнопки и ярлык? Что ж, давайте их построим.
Структурирование Вашего Приложения
Давайте создадим новую папку и файл buttons.kv в следующей структуре:
Мы только что создали две кнопки (т. е. Добавить кнопку и Вычесть кнопку ), но мы не рассматривали их стили. Мы можем играть с их стилем через Python, но я предпочитаю делать стиль с .kv и логику с Python.
Давайте добавим что-нибудь в наш файл buttons.kv .
Прежде чем мы добавим что-то в класс контейнера (макет сетки), нам сначала нужно сказать Kivy, чтобы он читал из файла buttons.kv в папке kv.
Вот тут-то и появляется builder .
Простой, но неэффективный способ работы с большими проектами-загрузить каждый файл .kv по отдельности.
Мы можем автоматизировать это:
Добавьте как можно больше файлов .kv в папку kv, и они будут автоматически загружены построителем
Итак, мы здесь — мы определили кнопки и контейнер; однако на экране по-прежнему ничего нет. Давайте перейдем к добавлению кнопок (наконец)
Отредактируйте файл main.kv .
Что такое on_release и id?
on_release и on_press являются специальными методами, которые являются частью поведения кнопки (см. kivy | uix| behaviors/button//), тогда как id является свойством каждого виджета (см. kivy/uix/widget.py ).
Свойство объекта
Следующий id будет использоваться для ObjectProperty для связи со стороной Python.
Теперь у нас должно быть наше окончательное рабочее приложение.
Вы можете загрузить окончательное рабочее приложение с github .
Вы можете загрузить окончательное рабочее приложение с || github || .
Вы можете загрузить окончательное рабочее приложение с || github || .
Вывод
Читайте также: