python服务器端
kinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中
教程链接:
本文中用到的函数
tkinter.TK() #创建一个窗口程序
*.title() #更改窗口标题
tkinter.Frame() #在屏幕上显示一个矩形区域,多用于容器
tkinter.pack() #tkinter的几何方法?包装
--- side表示放置位置
--- fill表示
---expand表示
Label() 可以显示文本?
(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。
Thread
利用threading.thread(func, args)初始一个新进程
调用.start()来启用进程
python服务器端code
import socket
import time
import tkinter
from tkinter.scrolledtext import ScrolledText
import threading
import requests
import tkinter
from socket import *
from time import ctime
from tkinter import *
global Text_Show
def AI_Talk(s):
response = requests.post("http://www.tuling123.com/openapi/api",
data={
"key":"5636c0854e88430383a861151bf764ca",
"info":s,
"userid":"123456"
})
response = response.json()
answer = response['text']
print(type(answer))
print(answer)
return answer
def Sever_Thread(sock,caddr):
Text_Show.insert("end","客户端@"+str(caddr[1])+"已连接\n")
while True:
data = str(sock.recv(1024).decode('UTF-8'))
if data=='quit':
Text_Show('end','客户端@'+str(caddr[1])+'终止了对话')
Text_Show.see(tkinter.END)
else:
Text_Show.insert('end','来自客户端@'+str(caddr[1])+'的消息为:'+data+'\n')
Text_Show.see(tkinter.END)
time.sleep(0.2)
data=AI_Talk(data)
sock.sendall(bytes(data,'UTF-8'))
Text_Show.insert('end',"线程关闭")
sock.close()
def Sever_Accept(ss):
while True:
sock,caddr=ss.accept()
Thread2 = threading.Thread(target=Sever_Thread, args = (sock, caddr))
Thread2.daemon=True
Thread2.start()
def Sever_Init():
HOST =''
PORT = 4700
ADDR = (HOST, PORT)
print(ADDR)
ss = socket(AF_INET, SOCK_STREAM, 0)
ss.bind(ADDR)
ss.listen(20) #允许最大监听数
Thread1=threading.Thread(target=Sever_Accept,args=(ss,))
Thread1.daemon=True #线程守护
Thread1.start()#主函数
if __name__ == "__main__":
root=tkinter.Tk()
root.title("聊天小程序服务器端 ")
frame1=Frame(root)
frame1.pack()
IP_Show_Label=Label(frame1,text="默认IP:127.0.0.1\n默认端口为6000\n无法更改!!!")
IP_Show_Label.pack(side='left')
frame2=Frame(root)
frame2.pack()
Text_Show=ScrolledText(frame2,width=100,height=30)
Text_Show.bind("<KeyPress>",lambda e:"break")
Text_Show.pack(side="bottom",fill = 'both', expand = True)
Sever_Init()
root.mainloop()
Android端
参考SharePreference:
在Android中,可以使用几种方式实现数据持久化:
个人认为:sharePreference适合轻量数据永久保存,sqlite是小型数据库,content provider应该是进程间通讯的搬运工(可以实现系统应用与app之间的通信)
相机实现
参考:
startActivityForResult() 参考
GPS实现