纳西妲牌羽毛球 2022-06-08 21:56 采纳率: 75%
浏览 106

python聊天室如何发送表情包啊?求大家指导

我想制作一个聊天室,但在发送表情宝这里遇到了困难。

import socket
from tkinter import *
import tkinter.messagebox
import threading
import json
import tkinter.filedialog
from tkinter.scrolledtext import ScrolledText
from time import strftime
from time import *

IP = ''
PORT = ''
user = ''
listbox1 = ''  # 用于显示在线用户的列表框
show = 1  # 用于判断是开还是关闭列表框
users = []  # 在线用户列表
chat = '------Group chat-------'  # 聊天对象

# 登陆窗口

root0 = tkinter.Tk()
root0.geometry("300x150")
root0.title('用户登陆窗口')
root0.resizable(0, 0)
one = tkinter.Label(root0, width=300, height=150, bg="#D0EEFF")
one.pack()

IP0 = tkinter.StringVar()
IP0.set('')
USER = tkinter.StringVar()
USER.set('')

labelIP = tkinter.Label(root0, text='IP地址', bg="#D0EEFF")
labelIP.place(x=20, y=20, width=100, height=40)
entryIP = tkinter.Entry(root0, width=60, textvariable=IP0)
entryIP.place(x=120, y=25, width=100, height=30)

labelUSER = tkinter.Label(root0, text='用户名', bg="#D0EEFF")
labelUSER.place(x=20, y=70, width=100, height=40)
entryUSER = tkinter.Entry(root0, width=60, textvariable=USER)
entryUSER.place(x=120, y=75, width=100, height=30)


def Login(*args):
    global IP, PORT, user
    IP, PORT = entryIP.get().split(':')
    user = entryUSER.get()
    if not user:
        tkinter.messagebox.showwarning('warning', message='用户名为空!')
    else:
        root0.destroy()


loginButton = tkinter.Button(root0, text="登录", command=Login, bg="#50BEFF")
loginButton.place(x=135, y=110, width=40, height=25)
root0.bind('<Return>', Login)

root0.mainloop()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, int(PORT)))
if user:
    s.send(user.encode())  # 发送用户名
else:
    s.send('用户名不存在'.encode())
    user = IP + ':' + PORT
root1 = tkinter.Tk()
oo = tkinter.PhotoImage(file="C://Users//abc//Desktop//yyy.png")
root1.geometry("960x480")
root1.title('芊芊聊')
root1.resizable(0, 0)
scr = Scrollbar(root1)
ida = tkinter.Label(root1, image=oo)
ida.image = oo
ida.place(x=635, y=0)
photo = tkinter.PhotoImage(file="C://Users//abc//Desktop//Liaotian//yyy.png")
listbox = ScrolledText(root1)
listbox.place(x=5, y=0, width=640, height=320)
listbox.tag_config('tag1', foreground='#009FFF', background="#BBECFF")
listbox.config(yscrollcommand=scr.set)
scr.config(command=listbox.yview)
listbox.insert(tkinter.END, '欢迎进入群聊,大家开始聊天吧!(如要私聊,请在发送的消息的后缀~后加上用户\n名)', 'tag1')
p1 = tkinter.PhotoImage(file="微信表情1.jpg")
p2 = tkinter.PhotoImage(file="微信表情2.jpg")
p3 = tkinter.PhotoImage(file="微信表情3.jpg")
p4 = tkinter.PhotoImage(file="微信表情4.jpg")
p5 = tkinter.PhotoImage(file="微信表情5.jpg")
p6 = tkinter.PhotoImage(file="微信表情6.jpg")
p7 = tkinter.PhotoImage(file="微信表情7.jpg")
p8 = tkinter.PhotoImage(file="微信表情8.jpg")
p9 = tkinter.PhotoImage(file="微信表情9.jpg")
p10 = tkinter.PhotoImage(file="微信表情10.jpg")
p11 = tkinter.PhotoImage(file="微信表情11.jpg")
p12 = tkinter.PhotoImage(file="微信表情12.jpg")
p13 = tkinter.PhotoImage(file='微信表情13.jpg')
p14 = tkinter.PhotoImage(file='微信表情14.png')
p15 = tkinter.PhotoImage(file='微信表情15.png')
button = tkinter.Button(root1, image=p15)
button.place(x=5, y=300)
dis = tkinter.PhotoImage(file="C://Users//abc//Desktop//Liaotian//fddre.jpg")
mode = 'hour'
ee = 0
er = tkinter.PhotoImage(file="C://Users//abc//Desktop//Liaotian//367542504897592196.png")
lbl = tkinter.Toplevel(root1)
lbl.title('时钟')


def showtime():
    if mode == 'hour':
        string = strftime("%H:%M:%S %p")
    else:
        string = strftime("%Y-%m-%d")

    lb = Label(lbl, width=100, image=er)
    lb.config(text=string)
    lb.after(1000, showtime)


bb = tkinter.PhotoImage(file="C://Users//abc//Desktop//Liaotian//按钮//时钟.png")
bbb = tkinter.Button(image=bb, command=lambda: showtime())
bbb.place(x=430, y=300)
INPUT = tkinter.StringVar()
INPUT.set('')
entryIuput = tkinter.Entry(root1, bg='#D0EEFF', width=120, textvariable=INPUT)
entryIuput.place(x=5, y=320, width=580, height=170)
listbox1 = tkinter.Listbox(root1)
listbox1.place(x=510, y=0, width=130, height=320)


# tk.mainloop()


def send(*args):
    message = entryIuput.get() + '~~' + user + '~' + chat
    s.send(message.encode())
    INPUT.set('')


# import tkinter as tk

# print(tk.CURRENT)
phott = tkinter.PhotoImage(file="C://Users//abc//Desktop//Liaotian//按钮//help提示.png")
def helpmessage():
    hhh = tkinter.Toplevel(root1)
    hhh.title = ('帮助')
    canvv = tkinter.Label(hhh, width=400, height=573, bg='white', image=phott)
    canvv.pack()

photo1 = tkinter.PhotoImage("C://Users//abc//Desktop//Liaotian//按钮//按钮.png")
sendButton = tkinter.Button(root1, text="\n发\n\n\n送", anchor='n', command=send, font=('Helvetica', 18),
                            compound='center')
sendButton.image = photo1
sendButton.place(x=585, y=300, width=55, height=300)
root1.bind('<Return>', send)
ppp = tkinter.PhotoImage(file="C://Users//abc//Desktop//Liaotian//按钮//help按钮.png")
help = tkinter.Button(root1, image=ppp, command=helpmessage)
help.place(x=460, y=295)
img = tkinter.PhotoImage(file="C://Users//abc//Desktop//Liaotian//按钮//装饰小按钮.gif")
img1 = tkinter.Button(root1, image=img)
img1.place(x=490, y=300)


def receive():
    global uses
    while True:
        data = s.recv(1024)
        data = data.decode()
        print(data)
        try:
            uses = json.loads(data)
            listbox1.delete(0, tkinter.END)
            listbox1.insert(tkinter.END, "当前在线用户")
            listbox1.insert(tkinter.END, "------Group chat-------")
            for x in range(len(uses)):
                listbox1.insert(tkinter.END, uses[x])
            users.append('------Group chat-------')
        except:
            data = data.split('~')
            message = data[0]
            userName = data[1]
            chatwith = data[2]
            message = '\n' + message
            if chatwith == '------Group chat-------':  # 群聊
                if userName == user:
                    listbox.insert(tkinter.END, message)
                else:
                    listbox.insert(tkinter.END, message)
            elif userName == user or chatwith == user:
                if userName == user:
                    listbox.tag_config('tag2', foreground='red')
                    listbox.insert(tkinter.END, message, 'tag2')
                else:
                    listbox.tag_config('tag3', foreground='green')
                    listbox.insert(tkinter.END, message, 'tag3')

            listbox.see(tkinter.END)


r = threading.Thread(target=receive)
r.start()

root1.mainloop()
s.close()


我不知道该如何实现在发送时显示一个表情,虽然网上有很多相关的帖子,但是大部分时部分代码或者思路,看不懂

我尝试了网上的很多方法,但与我的聊天室都不能融合到一起。

我想要达到的效果是在点击表情按钮时会出现一个新窗口。新窗口中有一些表情包按钮,点击就会发送表情包。

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-08 22:24
    关注

    对方必须也有表情包的图片才行啊,你发送的只是一串字符,对方程序收到后要读懂这串字符,然后读取相应的图片显示出来

    评论

报告相同问题?

问题事件

  • 修改了问题 6月11日
  • 修改了问题 6月8日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)