要通过python实现遥控器功能分两步:

第一步:开发图形化界面,以暴风TV的遥控器按钮为例

第二步:使PC端给电视发送相应指令(此步骤需要打开电视的adb开关)

现在就开始第一步操作实现遥控器功能,python2输入以下代码

注意:python3需要将代码中的from Tkinter import *

           替换为from tkinter import *

           将from SimpleDialog import *

           替换为import tkinter.simpledialog

#coding=utf-8
from Tkinter import *
from SimpleDialog import * '''
from tkinter import *
import tkinter.simpledialog
'''
root = Tk()
#设置图形的宽高
root.geometry('120x200')
#设置图形为不可拉升
root.resizable(0, 0)
#设置图形的标题
root.title('遥控器')
#添加组件布局
Button(root,text="电源",command="").place(x=45,y=0,)
Button(root,text="左键",command="").place(x=0,y=60,height=30)
Button(root,text="右键",command="").place(x=90,y=60,height=30)
Button(root,text="上键",command="").place(x=45,y=30,height=30)
Button(root,text="下键",command="").place(x=45,y=90,height=30)
Button(root,text="OK",command="").place(x=40,y=60,height=30,width=45)
Button(root,text="主页",command="").place(x=0,y=130,height=30,width=30)
Button(root,text="返回",command="").place(x=45,y=130,height=30,width=30)
Button(root,text="菜单",command="").place(x=90,y=130,height=30,width=30)
Button(root,text="音+",command="").place(x=0,y=170,height=30,width=30)
Button(root,text="音-",command="").place(x=45,y=170,height=30,width=30)
Button(root,text="BIU",command="").place(x=90,y=170,height=30,width=30)
mainloop()

运行成功后,Python2界面显示如左图,Python3界面显示如右图

第二步,在command中加入相应的键值对应的方法,可以先定义好各个方法,举个例子,比如电视的确定键对应的键值是23,那么我们先定义一个ok键对应的方法

def ok():
subprocess.call('adb shell input keyevent 23', shell=True)

同时,考虑到按ok键还没执行完毕,我们又按了其它键,这样就需要加入多线程,方法如下

def ok_1():
subprocess.call('adb shell input keyevent 23', shell=True) def ok():
t=threading.Thread(target=ok_1)
t.start()

这样,简单的遥控器功能,我们就做完了:

#coding=utf-8
from Tkinter import *
from SimpleDialog import *
import subprocess
import threading
'''
from tkinter import *
import tkinter.simpledialog
''' def up_1():
subprocess.call('adb shell input keyevent 19', shell=True) def up():
t=threading.Thread(target=up_1)
t.start() def down_1():
subprocess.call('adb shell input keyevent 20', shell=True) def down():
t=threading.Thread(target=down_1)
t.start() def left_1():
subprocess.call('adb shell input keyevent 21', shell=True) def left():
t=threading.Thread(target=left_1)
t.start() def right_1():
subprocess.call('adb shell input keyevent 22', shell=True) def right():
t=threading.Thread(target=right_1)
t.start() def home_1():
subprocess.call('adb shell input keyevent 3', shell=True) def home():
t=threading.Thread(target=home_1)
t.start() def back_1():
subprocess.call('adb shell input keyevent 4', shell=True) def back():
t=threading.Thread(target=back_1)
t.start()
def ok_1():
subprocess.call('adb shell input keyevent 23', shell=True) def ok():
t=threading.Thread(target=ok_1)
t.start() def voice_1():
subprocess.call('adb shell input keyevent 24', shell=True) def voice1():
t=threading.Thread(target=voice_1)
t.start() def voice_2():
subprocess.call('adb shell input keyevent 25', shell=True)
def voice2():
t=threading.Thread(target=voice_2)
t.start() def menu_1():
subprocess.call('adb shell input keyevent 82', shell=True)
def menu():
t=threading.Thread(target=menu_1)
t.start() def power_1():
subprocess.call('adb shell input keyevent 754', shell=True) def power():
t=threading.Thread(target=power)
t.start() def biu_1():
subprocess.call('adb shell input keyevent 733', shell=True) def biu():
t=threading.Thread(target=biu_1)
t.start() root = Tk()
#设置图形的宽高
root.geometry('120x200')
#设置图形为不可拉升
root.resizable(0, 0)
#设置图形的标题
root.title('遥控器')
#添加组件布局
Button(root,text="电源",command=power).place(x=45,y=0,)
Button(root,text="左键",command=left).place(x=0,y=60,height=30)
Button(root,text="右键",command=right).place(x=90,y=60,height=30)
Button(root,text="上键",command=up).place(x=45,y=30,height=30)
Button(root,text="下键",command=down).place(x=45,y=90,height=30)
Button(root,text="OK",command=ok).place(x=40,y=60,height=30,width=45)
Button(root,text="主页",command=home).place(x=0,y=130,height=30,width=30)
Button(root,text="返回",command=back).place(x=45,y=130,height=30,width=30)
Button(root,text="菜单",command=menu).place(x=90,y=130,height=30,width=30)
Button(root,text="音+",command=voice1).place(x=0,y=170,height=30,width=30)
Button(root,text="音-",command=voice2).place(x=45,y=170,height=30,width=30)
Button(root,text="BIU",command=biu).place(x=90,y=170,height=30,width=30)
mainloop() mainloop()

如何使其能操控电视,需要我们先使用adb命令连接电视ip,在cmd下,输入格式为:adb connect 192.168.XX.XXX

若连接成功后,输入adb devices显示 192.168.XX.XXX devices,表示连接成功,之后就可以用电脑上的遥控器控制电视了

 

利用python+tkinter做一个简单的智能电视遥控器的更多相关文章

  1. tkinter做一个简单的登陆页面

    做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...

  2. tkinter做一个简单的登陆页面(十六)

    做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...

  3. Windows 下针对python脚本做一个简单的进程保护

    前提: 大家运行的脚本程序经常会碰到系统异常关闭.或被其他用户错杀的情况.这样就需要一个进程保护的工具. 本文结合windows 的计划任务,实现一个简单的进程保护的功能. 利用py2exe生产 ex ...

  4. python小练习,利用dict,做一个简单的登录。

    '''利用字典实现登录'''users=[{'username':'jerry','pwd':'123456'},{'username':'tom','pwd':'1'}] def login(use ...

  5. 利用python+tkinter开发一个点名软件

    最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. t ...

  6. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

  7. 【Python】 做一个简单的 http server

    # coding=utf-8 ''' Created on 2014年6月15日 @author: Yang ''' import socket import datetime # 初始化socket ...

  8. 【Bugly干货分享】一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎

    Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不 ...

  9. 使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)

    使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Netw ...

随机推荐

  1. Ubuntu 16.04安装N卡驱动、cuda、cudnn和tensorflow GPU版

    安装驱动 最开始在英伟达官网下载了官方驱动,安装之后无法登录系统,在登录界面反复循环,用cuda里的驱动也出现了同样的问题.最后解决办法是把驱动卸载之后,通过命令行在线安装驱动. 卸载驱动: sudo ...

  2. GUI学习之二十三——QComboBox学习总结

    我们在前面分别介绍了两种输入控件:纯键盘文本输入和步长调节器,下面我们来学习下组合框(下拉选择输入). 一.简介 1.下拉框是一个组合控件(包含一个文本显示控件和一个按钮).它默认显示最小的控件给用户 ...

  3. java 中的编码(二)

    UTF-16编码规则: 按照UTF-16编码规则计算下Unicode码位为 U+10002 (十进制:65538)的字符的UTF-16编码表示. U+10002落在 [U+10000, U+10FFF ...

  4. php实现图片相似搜索

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...

  5. SSM整合中错误:Data truncation: Data too long for column 'gender' at row 1

    错误描述 ### SQL: insert into t_customer(name,gender,phone,address) values (?,?,?,?) ### Cause: com.mysq ...

  6. 【LuoguP5171】Earthquake

    题目链接 题意 求满足如下不等式的非负整数 \(x,y\) 的对数 \[ax+by\leq c\] Sol a,b,c 都是非负的,那么先随便变个形: \[y\leq\frac{c-ax}{b}\] ...

  7. 对Lockr的初步认识

    1.Lockr.set - 参数: [ key, value ] {String, Number, Array or Object} 设置一个指定的值,可以是任意类型 2.Lockr.get - 参数 ...

  8. clang和llvm的安装

    https://blog.csdn.net/qq_31157999/article/details/78906982

  9. jzoj6404. 【NOIP2019模拟11.04】B

    题目描述 Description Input 从文件b.in中读入数据. 第丬行三个正整数 n, m, K. 接下来 n 行每行 m 个正整数, 表示矩阵A. Output 输出到文件b.out中. ...

  10. Python_019(六星级别之反射方法)

    1.反射 1)神赐给你的内置函数 : a: getattr(命名空间,'函数名') == 命名空间.属性名; 这里的命名空间指的是对象或者类; b: getattr四个应用场景: 1)类名.名字 &l ...