利用python+tkinter做一个简单的智能电视遥控器

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

第一步:开发图形化界面

第二步:使PC端给电视发送相应指令

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

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

           替换为from tkinter import *

           将from SimpleDialog import *

           替换为import tkinter.simpledialog

#coding=utf-8from 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,表示连接成功,之后就可以用电脑上的遥控器控制电视了

 

原文地址:https://www.cnblogs.com/ffrs/p/10999357.html

时间: 2024-11-07 07:59:16

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

【Python】 做一个简单的 http 服务器

# coding=utf-8 ''' Created on 2014年6月15日 @author: Yang ''' import socket import datetime # 初始化socket s = socket.socket() # 获取主机名, 也可以使用localhost # host = socket.gethostname() host = "localhost" # 默认的http协议端口号 port = 80 # 绑定服务器socket的ip和端口号 s.bin

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

'''利用字典实现登录'''users=[{'username':'jerry','pwd':'123456'},{'username':'tom','pwd':'1'}] def login(username,pwd): print(username,pwd) if(username==''or pwd==''): return 0 else: isbool=True for dict1 in users: if (dict1['username']==username and dict1['

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

最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. tk:文档  https://wiki.python.org/moin/TkInter tk是python 自带的一个GUI模块 效果: 背景图: icon图标: 源码: from win32com.client import Dispatch from tkinter import * import

【Python】 做一个简单的 http server

# coding=utf-8 ''' Created on 2014年6月15日 @author: Yang ''' import socket import datetime # 初始化socket s = socket.socket() # 获取主机名, 也能够使用localhost # host = socket.gethostname() host = "localhost" # 默认的http协议端口号 port = 80 # 绑定serversocket的ip和端口号 s.

利用CSS布局做一个简单的荣誉证书

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style type="text/css"> body{ background-image: url(../pic/125.jpg); background-repeat: no-repeat; background-size: 700px 500px; } .f1{ font-family: san

利用文件打开方式with open(&#39;文件名&#39;,方式) as 变量名做一个简单的复制(排除大文件bug)

1 #!usr/bin/env python 2 #-*- coding=utf-8 -*- 3 4 with open('b.py','r') as obj1, open('c.py','w') as obj2: 5 for line in obj1.read(): 6 obj2.write(line) 将a.py的数据一行一行的进行复制 节省的了内存 另外 这种打开方式 免除了 之后需要的f.close() 对代码量上有细微的差距...(我自己想的...) 注意:第二个open不接with

用Python socket实现一个简单的http服务器(post 与get 的区别)

预备知识: 关于http协议的基础请参考这里. 关于socket基础函数请参考这里. 关于python网络编程基础请参考这里. 废话不多说,前面实现过使用linux c 或者python 充当客户端来获取http 响应,也利用muduo库实现过一个简易http服务器,现在来实现一个python版的简易http服务器,代码改编自http://www.cnblogs.com/vamei/ httpServer.py Python Code 1 2 3 4 5 6 7 8 9 10 11 12 13

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

Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不惭而标题党了,离真正的粒子引擎还有点远.废话少说,先看[demo],扫描后点击屏幕有惊喜哦… 本文将教会你做一个简单的canvas粒子制造器(下称引擎). 世界观 这个简单的引擎里需要有三种元素:世界(World).发射器(Launcher).粒子(Grain).总得来说就是:发射器存在于世界之中,

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

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操