Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Создаем Пульт Для Телевизора При Помощи Python И Смартфона

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,071
Баллы
155
Возраст
51
Рассказывает Энтони Шоу


Вряд ли кто-то вспоминает о Python, когда речь заходит о мобильной разработке. И очень зря, у нас даже есть

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

: для Python тоже существуют инструменты, способные преобразовать ваш код для работы под iOS, Android или Windows Phone.

В этом руководстве я покажу вам, как создать простой пульт (роль пульта будет выполнять iPhone) для телевизоров Panasonic Viera.

Нам понадобятся:

  • Xcode, так как мы пишем для iPhone, но пульт также можно сделать и для Android, об этом мы поговорим в конце;
  • Желательно Python 3.5;
  • Телевизор Panasonic Viera с возможностью подключения к сети.
Создаем проект


Загружаем себе

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

— инструмент для конвертирования проект на Python в нативные приложения. Сделать это можно следующим образом: pip install briefcase. Далее создаем новую папку для нашего проекта mkdir tv_remote, внутри нее создаем папку Remote с файлами __init__.py и app.py. __init__.py может быть пустым, а вот в app.py нужно написать следующее:

import toga


def button_handler(widget):
print("hello")


def build(app):
box = toga.Box()

button = toga.Button('Hello world', on_press=button_handler)
button.style.set(margin=50)
box.add(button)

return box


if __name__ == '__main__':
app = toga.App('First App', 'org.pybee.helloworld', startup=build)
app.main_loop()

Теперь создадим файл setup.py. В нем мы будем описывать для какой платформы создается приложение. Обозначим pip пакеты, которые мы будем использовать. Нам понадобятся библиотека toga UI и библиотека для управления телевизором — PyViera.

from setuptools import setup, find_packages

setup(name='Remote',
version = '0.1',
packages = find_packages(),
options = {
'app': {
'formal_name': 'TV Remote',
'bundle': 'org.tv.remote'
},
'ios': {
'app_requires': [
'toga-ios',
'git+https://github.com/tonybaloney/pyviera-1.git@master#egg-info=pyviera'
]
}
}
)

После этого ваша директория должна выглядеть следующим образом:



Теперь внутри папки tv_remote запускаем команду python setup.py ios, которая загрузит необходимые компоненты и создаст xcode проект.



Запустим проект. Создастся симулятор iPhone и наше приложение.



Создаем пульт


Давайте добавим кнопку (цифра 5) для переключения канала.

import toga
from pyviera import Viera

tvs = Viera.discover()

def channel_5(widget):
global tvs
if len(tvs) == 0:
tvs = Viera.discover()
tvs[0].num(5)


def build(app):
box = toga.Box()

button = toga.Button('5', on_press=channel_5)
button.style.set(margin=50)
box.add(button)

return box


if __name__ == '__main__':
app = toga.App('TV Remote', 'org.tv.remote', startup=build)
app.main_loop()

Перезапустим приложение. Если все работает, вы должны увидеть следующее сообщение:



Теперь включаем телевизор и пробуем нажать цифру 5!

Создаем остальные кнопки


Так как Toga позволяет применять CSS стили для выравнивания, мы создадим 5 рядов кнопок и расположим их как на реальном пульте от телевизора.

import toga
from colosseum import CSS
from pyviera import Viera

tvs = Viera.discover()

def set_channel(widget):
global tvs
channel = int(widget.label)
print("Changing to channel {0}".format(channel))
tvs[0].num(channel)

def mute(widget):
global tvs
tvs[0].mute()

def build(app):
row_c = toga.Box()

row_c.add(toga.Button('mute', on_press=mute))
row_c.style.set(flex_direction='row', margin=5, padding_left=60)


row_0 = toga.Box()

row_0.add(toga.Button('1', on_press=set_channel))
row_0.add(toga.Button('2', on_press=set_channel))
row_0.add(toga.Button('3', on_press=set_channel))
row_0.style.set(flex_direction='row', margin=5)

row_1 = toga.Box()

row_1.add(toga.Button('4', on_press=set_channel))
row_1.add(toga.Button('5', on_press=set_channel))
row_1.add(toga.Button('6', on_press=set_channel))
row_1.style.set(flex_direction='row', margin=5)

row_2 = toga.Box()

row_2.add(toga.Button('7', on_press=set_channel))
row_2.add(toga.Button('8', on_press=set_channel))
row_2.add(toga.Button('9', on_press=set_channel))
row_2.style.set(flex_direction='row', margin=5)

row_3 = toga.Box()

row_3.add(toga.Button('0', on_press=set_channel))
row_3.style.set(flex_direction='row', margin=5, padding_left=60)

box = toga.Box()
box.style.set(flex_direction='column', padding_top=60, padding_left=100)
box.add(row_c)
box.add(row_0)
box.add(row_1)
box.add(row_2)
box.add(row_3)
return box


if __name__ == '__main__':
app = toga.App('TV Remote', 'org.tv.remote', startup=build)
app.main_loop()

Перезапустим приложение и — вуаля — работающий пульт для телевизора!



Что делать, если у вас Android?


Вернемся к моменту, когда мы работали с setup.py, и теперь вместо python setup.py ios запустим python setup.py android. После этого briefcase создаст для вас Android проект.

Запись

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

впервые появилась

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.
 
Вверх