This Chat V1.0
本帖最后由 歌者文明清理员 于 2023-6-23 13:52 编辑温馨提示:
使用 Twilight6 大神的 MarDisTextConverter 源文本转换器 生成格式。
This Chat V1.0
This Chat 简介
This Chat 是 dddddgz(我) 开发的一个本地聊天程序。
目前你看到的版本是 V1.0。
https://github.com/dddddgz/this-chat
This Chat 的效果
普通发送消息
快捷键:Ctrl+Enter
更改用户名
类似切换用户
This Chat 源码
from tkinter import *
from datetime import datetime
def fas():
"""
发送消息
:return: None
"""
text = sendmsg.get(1.0, END).rstrip()
# 清空
sendmsg.delete(1.0, END)
messages.append(text)
msg["state"] = NORMAL
now = datetime.now()
# 类似于 html 的 class 属性,便捷地设置标签
msg.insert(END, f"{username}", "user")
msg.insert(END, f" 发表于 {now.strftime('%Y-%m-%d %H:%M:%S')}", "time")
msg.insert(END, "\n")
msg.insert(END, text)
msg.insert(END, "\n\n")
msg["state"] = DISABLED
sendb["state"] = DISABLED
def check(ev):
"""
检查
:param ev: event(from tk)
:return: None
"""
if sendmsg.get(1.0, END).strip():
sendb["state"] = NORMAL
else:
sendb["state"] = DISABLED
def change():
"""
更改用户名,差不多就是切换用户
:return: None
"""
func = lambda: changeto(entry, top)
top = Toplevel()
top.title("输入你的新用户名")
top.geometry('300x50+150+150')
entry = Entry(top, font=font)
entry.grid(row=0, column=0)
cfm = Button(top, text="确定(Enter)", font=font, width=10, height=1)
cfm["command"] = func
cfm.grid(row=0, column=1)
top.bind("<KeyPress-Return>", lambda x: func())
top.mainloop()
def changeto(entry, top):
global username
username = entry.get()
top.destroy()
uss["text"] = f"当前用户名:{username}"
# 消息
messages = []
root = Tk()
root.geometry("700x700+100+100")
root.title("This Chat V1.0 - Powered by dddddgz")
# 通用的字体
font = ("Microsoft Yahei UI", 11)
# 用户名
username = "TestUser"
# username shower
uss = Label(root, text=f"当前用户名:{username}", font=font)
uss.grid(row=1, column=1)
# username editor
use = Button(root, text="更改用户名", font=font)
use["command"] = change
use.grid(row=1, column=2)
label = Label(root, text="历史消息", font=font)
label.grid(row=1, column=0, sticky=W)
# 历史消息
msg = Text(root, width=50, height=20, font=font)
msg["state"] = DISABLED
msg.tag_config("user", foreground="green", font=font + ("bold", ))
msg.tag_config("time", foreground="blue", font=font)
msg.grid(row=2, column=0)
label = Label(root, text="发送消息", font=font)
label.grid(row=3, column=0, sticky=W)
# 消息编辑区
sendmsg = Text(root, width=50, height=4, font=font)
sendmsg.grid(row=4, column=0)
# 消息发送按钮
sendb = Button(root, width=20, height=1, font=font, text="发送消息(Ctrl+Enter)")
sendb["command"] = fas
sendb["state"] = DISABLED
sendb.grid(row=4, column=1, sticky=W, columnspan=2)
# 每次一按下键就检测是否应该更改 sendb 的状态为 NORMAL 或 DISABLED
root.bind("<KeyPress>", check)
root.bind("<Control-KeyPress-Return>", lambda x: fas())
root.mainloop()
吐了,有鱼币都没人 @Twilight6 @小甲鱼 @不二如是 @liuhongrun2022 @一点沙 @sfqxx @中英文泡椒 @isdkz @陈尚涵 @人造人 {:10_254:} @yinda_peng @sfqxx_小 @lzb1001 好家伙。你是自己练习吗?有没有继续在做呢?我最近也在写tkinter,可以一起开发玩吗? 我最近也在玩tkinter,感觉基本功能还可以,但是好像还需要补充好多东西,比如账号密码登录,不同的用户可以联机发送文字,同时刷新。感jio可以再优化,要一起玩玩吗
看起来很好玩,待会我试试^_^ 换了名字简直就是匿名{:10_256:} wc?牛逼呀 歌者文明清理员 发表于 2023-6-18 00:28
@Twilight6 @小甲鱼 @不二如是 @liuhongrun2022 @一点沙 @sfqxx @中英文泡椒 @isdkz @陈尚涵 @人造人 {:10_ ...
来啦 这个东西我前端做过,前端很简单 太强了,hxd xunyu 发表于 2023-6-18 03:36
我最近也在玩tkinter,感觉基本功能还可以,但是好像还需要补充好多东西,比如账号密码登录,不同的用户可以 ...
联机的话就跟Mike的没啥区别了,主要我这个都是自己写的没参考他 xunyu 发表于 2023-6-18 03:32
好家伙。你是自己练习吗?有没有继续在做呢?我最近也在写tkinter,可以一起开发玩吗?
不是练习,是多做点程序有精华可以玩{:10_256:} Axiujiu 发表于 2023-6-18 09:44
太强了,hxd
一边看小甲鱼的教程一边写的{:10_298:}
https://fishc.com.cn/forum.php?mod=forumdisplay&fid=243&filter=typeid&typeid=604 歌者文明清理员 发表于 2023-6-18 00:28
@Twilight6 @小甲鱼 @不二如是 @liuhongrun2022 @一点沙 @sfqxx @中英文泡椒 @isdkz @陈尚涵 @人造人 {:10_ ...
at这么多人不at我( 陶远航 发表于 2023-6-18 12:09
at这么多人不at我(
等一下,我往里面加一个用户登录 陶远航 发表于 2023-6-18 12:25
等一下,我往里面加一个用户登录
那是我1.1版的功能…… 歌者文明清理员 发表于 2023-6-18 12:25
那是我1.1版的功能……
加我自己写的,可以直接套
https://fishc.com.cn/thread-225240-1-1.html 本帖最后由 歌者文明清理员 于 2023-6-18 17:20 编辑
陶远航 发表于 2023-6-18 12:50
加我自己写的,可以直接套
https://fishc.com.cn/thread-225240-1-1.html
我不想参考任何人的,this Chat 是纯我原创的 @sfqxx