歌者文明清理员 发表于 2023-6-18 00:14:51

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()

歌者文明清理员 发表于 2023-6-20 19:06:49

吐了,有鱼币都没人

歌者文明清理员 发表于 2023-6-18 00:28:00

@Twilight6 @小甲鱼 @不二如是 @liuhongrun2022 @一点沙 @sfqxx @中英文泡椒 @isdkz @陈尚涵 @人造人 {:10_254:}

Threebody1 发表于 2023-6-18 00:37:36

@yinda_peng @sfqxx_小 @lzb1001

xunyu 发表于 2023-6-18 03:32:28

好家伙。你是自己练习吗?有没有继续在做呢?我最近也在写tkinter,可以一起开发玩吗?

xunyu 发表于 2023-6-18 03:36:44

我最近也在玩tkinter,感觉基本功能还可以,但是好像还需要补充好多东西,比如账号密码登录,不同的用户可以联机发送文字,同时刷新。感jio可以再优化,要一起玩玩吗

liuhongrun2022 发表于 2023-6-18 07:03:26

看起来很好玩,待会我试试^_^

Ewan-Ahiouy 发表于 2023-6-18 07:34:48

换了名字简直就是匿名{:10_256:}

yinda_peng 发表于 2023-6-18 07:57:50

wc?牛逼呀

一点沙 发表于 2023-6-18 08:12:32

歌者文明清理员 发表于 2023-6-18 00:28
@Twilight6 @小甲鱼 @不二如是 @liuhongrun2022 @一点沙 @sfqxx @中英文泡椒 @isdkz @陈尚涵 @人造人 {:10_ ...

来啦

陈尚涵 发表于 2023-6-18 09:08:56

这个东西我前端做过,前端很简单

Axiujiu 发表于 2023-6-18 09:44:14

太强了,hxd

歌者文明清理员 发表于 2023-6-18 10:22:50

xunyu 发表于 2023-6-18 03:36
我最近也在玩tkinter,感觉基本功能还可以,但是好像还需要补充好多东西,比如账号密码登录,不同的用户可以 ...

联机的话就跟Mike的没啥区别了,主要我这个都是自己写的没参考他

歌者文明清理员 发表于 2023-6-18 10:36:24

xunyu 发表于 2023-6-18 03:32
好家伙。你是自己练习吗?有没有继续在做呢?我最近也在写tkinter,可以一起开发玩吗?

不是练习,是多做点程序有精华可以玩{:10_256:}

歌者文明清理员 发表于 2023-6-18 10:41:17

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 12:09:13

歌者文明清理员 发表于 2023-6-18 00:28
@Twilight6 @小甲鱼 @不二如是 @liuhongrun2022 @一点沙 @sfqxx @中英文泡椒 @isdkz @陈尚涵 @人造人 {:10_ ...

at这么多人不at我(

陶远航 发表于 2023-6-18 12:25:19

陶远航 发表于 2023-6-18 12:09
at这么多人不at我(

等一下,我往里面加一个用户登录

歌者文明清理员 发表于 2023-6-18 12:25:31

陶远航 发表于 2023-6-18 12:25
等一下,我往里面加一个用户登录

那是我1.1版的功能……

陶远航 发表于 2023-6-18 12:50:44

歌者文明清理员 发表于 2023-6-18 12:25
那是我1.1版的功能……

加我自己写的,可以直接套
https://fishc.com.cn/thread-225240-1-1.html

歌者文明清理员 发表于 2023-6-18 12:59:35

本帖最后由 歌者文明清理员 于 2023-6-18 17:20 编辑

陶远航 发表于 2023-6-18 12:50
加我自己写的,可以直接套
https://fishc.com.cn/thread-225240-1-1.html

我不想参考任何人的,this Chat 是纯我原创的

歌者文明清理员 发表于 2023-6-18 17:19:32

@sfqxx
页: [1] 2 3
查看完整版本: This Chat V1.0