13:53 Как создать приложение в Kivy с обращением к веб узлу(адресу) |
Материал на котором основана статья взят с блога и оригинал текста в полном объеме можно найти по ссылке: http://alex-ln.wix.com/python#!Kivy-python-%D1%83%D1%80%D0%BE%D0%BA-0/cmbz/56155c5b0cf27d786fdbcf33 После успешной установки пакета kivy,начинаем изучать его функционал. Начальный модуль для всех наших проектов должен быть назван main.py, чтобы в дальнейшем можно было запускать наши программы на мобильных платформах. Давайте добавим немного кода в наш main.py: from kivy.app import App # импортируем класс App App().run() # создаем экземпляр класса и запускаем его методом .run() Результат: Выскочит окно с черным фоном from kivy.app import App class WeatherApp(App): # создаем подкласс класса App с именем WeatherApp (на протяжении уроков мы будем разрабатывать приложение связанное с погодой, это его начало) pass if __name__ = '__main__': # думаю понятно, при запуске модуля создается экземпляр WeatherApp().run() Результат: Тоже самое окно В kivy есть такое чудо как KV язык (kvlang) который обеспечивает простой синтаксис разметки, на примерах будет понятнее, что все это значит, а пока создаем файл с разрешением .kv в той же папке, что и main.py с именем нашего подкласса, только в нижнем регистре и без App приписки, то есть weather.kv. Код в wether.kv: Label: # создает объект Label (метка) text: 'Hello World' # устанавливает св-во text Результат: После запуска main.py
Это начало статьи на которую я буду опираться по изучению основ фреймворка Киви и созданию видео.
Теперь приведу код основного файла (обратите внимание на отличие с оригиналом "==" , а не "=" в if __name__ == '__main__': Для новичков эта опечатка автора может создать трудность при запуске файла. from kivy.app import App
pass if __name__ == '__main__': WeatherApp().run()
Файл с расширением .kv: AddLocationForm: orientation: 'vertical' BoxLayout: height: '40dp' # dp - пикселей дисплея, значит, что TextInput и 2 Button будут тоже это размера по высоте size_hint_y: None TextInput: size_hint_x: 50 # забирает половину размера BoxLayout по горизонтали Button: text: 'Search' size_hint_x: 25 Button: text: 'Current Location' size_hint_x: 25 ListView: item_strings: 'Palo Alto, MX', 'Palo Alto, US' Данный код запустит окно описание которого хорошо описано у автора, мы лишь должны обратить внимание как формируются виджеты в файле "кв" - очень важно соблюдать подчинение и вхождение элементов виджетов, то есть соблюдение отступов. BoxLayout и ListView - основные элементы нашего приложения и расположены в вертикальном порядке с разделением: BoxLayout ранимает 40рх, а всё оставшееся место ListView. BoxLayout в свою очередь имеет текстовое поле ввода TextInput и две кнопки с текстовыми значениями. Эти виджеты распологаются по горизонтали и процентное деление пространства для этих трех элементов задаётся параметром size_hint_x.
Вывод текста в командную строку по нажатию на кнопку 'Search' из поля TextInput Описание автора (первоисточника) я не могу превзойти, поэтому дальше привожу рабочий код приложения: главный файл: from kivy.app import App class AddLocationForm(BoxLayout): class WeatherApp(App): if __name__ == '__main__': Файл кв: AddLocationForm: Button: Button: ListView: Обратите внимание на отступы ибо если вы скопируете код файла кв с первоисточника внешний вид вашего приложения сильно исказиться... И так окончательный код приложения с обращением к веб узлу(адресу) основной файл: from kivy.app import App class AddLocationForm(BoxLayout): request = UrlRequest(search_url, self.found_location) # в киви есть пакет работающий с сетью (from kivy.network.urlrequest import UrlRequest) в нем есть класс UrlRequest, который отправляет запросы и принимает ответы, первым параметром передается адрес, вторым метод, который будет вызываться после получения ответа, в этот метод будут переданы два аргумента: сам объект и полученный ответ self.search_results.item_strings = cities # добавляем в объект ListView class WeatherApp(App): if __name__ == '__main__': WeatherApp().run() файл кв: AddLocationForm: Button: Button: ListView:
|
|
Всего комментариев: 0 | |