Как создать kv файл

Обновлено: 04.07.2024

На отметке времени в этой ссылке (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_1
name 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 - модель рук контр-террористов

t_models
tm_professional
tm_pirate
tm_phoenix
tm_professional_var3
tm_anarchist
>

выше приведён код который показывает серверу, какие модели террористов нужно использовать на данной карте
tm_professional - название модели террориста

Блок кода ниже отвечает за модели контр-террористов именно на этой карте

ct_models
ctm_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

Каждому приложению Kivy требуется создать подкласс App и переопределить метод build(), что мы и сделали. Сюда мы поместили код, который создает виджет Label с переданным значением text.

Для нашего примера будем использовать BoxLayout, в нем все элементы располагаются друг за другом при горизонтальной ориентации или друг под другом при вертикальной.

Изменим метод build чтобы он возвращал нам не один элемент интерфейса, а слой с несколькими элементами:

Не забудем импортировать BoxLayout

from kivy.uix.boxlayout import BoxLayout

Теперь запустим и увидим нужный результат:

Программа на kivy с двумя виджетами Label на BoxLayout

Все работает, но не видно где заканчивается один Label и начинается второй, я хочу поменять фон, работать с позиционированием элементов, для этого в киви существует язык разметки.

Сделаем отдельный файл с этой разметкой, он должен иметь расширение kv, по умолчанию метод run() будет искать с файл с именем нашего класса без App, т.е. в нашем случае main.kv

Перепишем пример выше, сначала код файла main.kv:

Теперь изменим код hello.py на:

Запускаем скрипт и мы должны увидеть все тоже самое, если так, то ничего не сломалось и можно продолжить.

Начнем доработку внешнего вида, для этого поменяем файл main.kv. Во первых сделаем разные цвета для наших Label и отделим их друг от друга:

Работа с внешнем видом в фреймворке kivy

Усложняем программу

Теперь сделаем программу чуть сложнее чем Helloworld, сделаем чтобы мы вводили в нее свое имя и она с нами здоровалась.

Она должна выглядеть вот так:

Конченая программа на фреймворке Kivy Python

Сверху картинка, потом поле ввода, потом надпись, потом кнопка.

Файл шаблона (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 || .

Вывод

Читайте также: