-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathchat_s.py
59 lines (48 loc) · 1.5 KB
/
chat_s.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# coding=UTF-8
from Tkinter import *
from socket import *
from thread import *
soo = socket(AF_INET, SOCK_STREAM)
local_ip = '127.0.0.1'
local_port = 10317
soo.bind((local_ip, local_port))
soo.listen(5)
so, addr = soo.accept()
root = Tk()
root.title('和Randy聊天中')
root.geometry("450x500")
Label(root, text = '聊天记录:').grid(row = 0, sticky = W, padx = 5, pady = 5)
#record text
r_frame = Frame(root)
r_frame.grid(row = 1, sticky = W)
r_text = Text(r_frame, width = 60, height = 20)
r_sbar = Scrollbar(r_frame, command = r_text.yview, orient = VERTICAL)
r_text.config(yscrollcommand = r_sbar.set)
r_text.bind("<KeyPress>", lambda e: 'break')
r_text.pack(side = LEFT, fill = BOTH)
r_sbar.pack(side = RIGHT, fill = Y)
Label(root, text = '请输入聊天信息:').grid(row = 3, sticky = W, padx = 5, pady = 5)
#type text
t_frame = Frame(root)
t_frame.grid(row = 4, sticky = W)
t_text = Text(t_frame, width = 60, height = 8)
t_sbar = Scrollbar(t_frame, command = t_text.yview, orient = VERTICAL)
t_text.config(yscrollcommand = t_sbar.set)
t_text.pack(side = LEFT, fill = BOTH)
t_sbar.pack(side = RIGHT, fill = Y)
def send_chat(event):
data = t_text.get(1.0, 'end').strip().encode('utf-8')
r_text.insert('end', 'Alice:' + data + '\n')
so.send(data)
t_text.delete(1.0, 'end')
return 'break'
t_text.bind('<Return>', send_chat)
def recvthread(so):
while True:
buf = so.recv(256)
if not buf:
break
r_text.insert('end', 'Randy:' + buf + '\n')
so.close()
start_new_thread(recvthread, (so, ))
root.mainloop()