鱼C论坛

 找回密码
 立即注册
查看: 959|回复: 10

[吹水] 多线程图形化聊天程序

[复制链接]
发表于 2023-7-7 16:18:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
@歌者文明清理员 @sfqxx @Mike_python小 @猪猪虾 @高山 @python爱好者. @zhangjinxuan @陶远航 @yinda_peng @wuna

这不假叽叽歪歪想弄一个多线程程序嘛,去网上查了一下,是很难弄,写完不知道有没有漏洞

你们可以登录进去测试一下,也请@Mike_python小 指导
#客户端
import tkinter
from tkinter import font
import tkinter.messagebox
import socket
import threading
import time

string=''
def my_string(s_input):
    string = s_input.get()

def Send(sock):
    '''
        发送数据的方法
        参数:
            sock:定义一个实例化socket对象
            server:传递的服务器IP和端口
    '''
    if string!='':
        message = name + ' : ' + string
        data = message.encode('utf-8')
        sock.send(data)
        if string.lower() == 'EXIT'.lower():
            exit()


def recv(sock):
    sock.send(name.encode('utf-8'))
    while True:
        data = sock.recv(1024)
        #加一个时间戳
        time_tuple = time.localtime(time.time())
        str = ("{}点{}分".format(time_tuple[3],time_tuple[4]))
        rrecv = tkinter.Label(t,text=data.decode('utf-8'),width=40,anchor='w',bg='pink')#接收的消息靠左边
        rrecv.pack()

def left():
    global string
    string = rv1.get()
    Send(s)
    if string!='':
        rleft = tkinter.Label(t,text=string,width=40,anchor='e')#发送的消息靠右边
        rleft.pack()
        rv1.set('')

def Creat():
    global name
    name = n.get()
    
    #接收进程
    tr = threading.Thread(target=recv, args=(s,), daemon=True)
    # daemon=True 表示创建的子线程守护主线程,主线程退出子线程直接销毁
    tr.start()
     
    l.destroy()
    e.destroy() 
    b.destroy()
    t.title("聊天室")
    t.geometry("500x600")
    rL0 = tkinter.Label(t,text='%s的聊天室'%name,width=40)
    rL0.pack()
    rL1 = tkinter.Label(t,text='请输入消息:',width=20, height=1)
    rL1.place(x=0,y=450)
    rE1 = tkinter.Entry(t, textvariable = rv1)
    rE1.place(x=200,y=450) 
    rB1 = tkinter.Button(t, text="发送",command=left)  
    rB1.place(x=380,y=450)
    #发送进程

def JieShu():
    tkinter.messagebox.showwarning(title='你确定退出吗?', message='刚才你点击了关闭按钮')
    s.send("error1".encode('utf-8'))
    exit(0)   
    
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    
server = ('10.100.207.40', 9999)
s.connect(server)#建立连接
t=tkinter.Tk()
t.title("多人聊天室")
t.geometry("300x200+500+200")
l = tkinter.Label(t,text='多人聊天室欢迎您,请输入你的名称',width=40, height=8)
l.pack()
n = tkinter.StringVar()
e = tkinter.Entry(t, width=15,textvariable = n)
e.pack() 
rv1 = tkinter.StringVar()
name = n.get()

b = tkinter.Button(t, text="登录",width=40, height=10,command=Creat) 

b.pack()
t.protocol("WM_DELETE_WINDOW", JieShu)
t.mainloop()

s.close()
其中要注意的是,需要安装GUI
pip install wxPython

pip install PyGTK

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
python爱好者. + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 16:19:58 | 显示全部楼层
支持,顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-7 16:20:40 | 显示全部楼层

谢谢,我这边有点小麻烦,因为admin登录是正常的,但是客户端会报错,说响应超时
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 17:49:37 | 显示全部楼层
???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 17:52:55 | 显示全部楼层
4.png

py version 3.9.9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 18:27:32 | 显示全部楼层

你一起安装干嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 18:36:57 | 显示全部楼层
sfqxx 发表于 2023-7-7 18:27
你一起安装干嘛?

一起还是分开都一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 18:37:37 | 显示全部楼层

O
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-7 18:48:54 | 显示全部楼层

报错嘛,你试一下客户端的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 20:33:12 | 显示全部楼层
Traceback (most recent call last):
  File "c:\Users\Qin\Desktop\Programes\test.py", line 78, in <module>
    s.connect(server)#建立连接
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

没开吗?

我看你这代码比我写的好多了我那个好多都是大绕弯,后来我查问题的时候可愁死我了
对了,发个截图看看呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-7 21:08:29 | 显示全部楼层
Mike_python小 发表于 2023-7-7 20:33
没开吗?

我看你这代码比我写的好多了我那个好多都是大绕弯,后来我查问题的时候可愁死我 ...

啊哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 21:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表