tkinter+sockte实现基本的实时收发
tkinter
tkinter是比较简单的GUI界面设计块,有许多控件基本能实现很多简单的功能,比如很多应用软件安装时的GUI都可以实现。
在这个的功能里只用到模块的按钮(Button)、输入框(Entry)、输出框(Text)功能。
socket
socket用来创建服务器和客户端。
服务端代码
from tkinter import *
from socket import *
import threading
import time
class myapp(Tk):
def __init__(self):
super().__init__()
self.title("完形填空")
self.geometry("240x240")
self.s=socket(AF_INET,SOCK_STREAM)
self.host=''
self.port=6666
self.addr=(self.host,self.port)
self.s.bind(self.addr)
self.s.listen(5)
self.entry=Entry(self)
self.entry.place(x=0,y=0,width=240,height=60)
b1=Button(self,text="连接",command=self.lianjie)
b1.place(x=0,y=60,width=120,height=60)
b2=Button(self,text="发送",command=self.fasong)
b2.place(x=120,y=60,width=120,height=60)
self.text=Text(self)
self.text.place(x=0,y=120,width=240,height=120)
def lianjie(self):
self.tap,self.addr=self.s.accept()
print(self.addr)
t1=threading.Thread(target=self.jianting).start()
def fasong(self):
date=self.entry.get()
self.tap.send(date.encode())
def jianting(self):
while True:
sou=self.tap.recv(1024)
if sou:
self.text.insert(END,sou.decode()+'\n')
else :
time.sleep(1)
if __name__ =='__main__':
ap=myapp()
ap.mainloop()
客户端代码
from tkinter import *
from socket import *
import threading
import time
class myapp(Tk):
def __init__(self):
super().__init__()
self.title("完形填空")
self.geometry("240x240")
#self.host='192.168.100.4'
#self.port=6666
self.text=Text(self)
self.text.place(x=0,y=120,width=240,height=60)
self.add=('192.168.100.4',6666)
self.s=socket(AF_INET,SOCK_STREAM)
self.entry=Entry(self)
self.entry.place(x=0,y=0,width=240,height=60)
b1=Button(self,text="连接",command=self.lianjie)
b1.place(x=0,y=60,width=120,height=60)
b2=Button(self,text="发送",command=self.fasong)
b2.place(x=120,y=60,width=120,height=60)
def lianjie(self):
self.s.connect(self.add)
t1=threading.Thread(target=self.xunhuan).start()
def xunhuan(self):
while True:
date=self.s.recv(1024)
if date:
self.text.insert(END,date.decode()+'\n')
else :
time.sleep(1)
def fasong(self):
date=self.entry.get()
self.s.send(date.encode())
if __name__=='__main__':
ap=myapp()
ap.mainloop()
使用说明
服务端不用管,直接C和V就行
客户端需要更改一下’192.168.100.4’,将它改成服务端的ip地址即可。
两个程序的GUI界面都是一样的
上方空白处时Entry输入框,下方空白是输出框,服务端的按钮是打开服务器,客户端的按钮则是连接服务器。
在Entry中输入内容后,点击发送即可在另一方的输出端输出。
这是本人在学习tkinter和socke的一次学习记录,有任何问题或者想要讨论请加445532989,学习路上不孤单,谢谢大家。