教你用Python和wxPython模块打造一个ChatGPT式打字效果程序

news2025/3/1 1:51:52

应用场景,可以使用类似ChatGPT回复的打字效果来增强用户体验或提高应用程序的可读性:

  1. 聊天机器人:当聊天机器人回复用户消息时,使用打字效果可以更好地模拟真实聊天体验,增强用户对聊天机器人的信任感。
  2. 电子邮件客户端:在电子邮件客户端中,使用打字效果可以增加电子邮件的可读性,并帮助读者更容易地跟踪和理解邮件内容。
  3. 网页设计:在网页设计中,使用打字效果可以增强网页的动态感和互动性,使用户感到更加舒适和亲近。
  4. 游戏设计:在游戏设计中,使用打字效果可以增强游戏的叙事效果和氛围感,使游戏更加生动有趣。
  5. 教育/培训:在教育和培训领域,使用打字效果可以增强学习体验,使学生更好地理解和记忆重要概念。
  6. 演示文稿:在演示文稿中,使用打字效果可以使演示更加生动有趣,并使观众更容易跟上演示的节奏。

源代码:

import wx
import sys
import time

class TypewriterFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(400, 300))

        # 创建用户输入控件
        self.input_text = wx.TextCtrl(self, style=wx.TE_MULTILINE)

        # 创建打字效果控件
        self.output_text = wx.TextCtrl(self, style=wx.TE_MULTILINE|wx.TE_READONLY)

        # 创建确定按钮
        self.button = wx.Button(self, label="确定")
        self.button.Bind(wx.EVT_BUTTON, self.OnClick)

        # 布局控件
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.input_text, 1, wx.EXPAND|wx.ALL, 5)
        sizer.Add(self.button, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        sizer.Add(self.output_text, 1, wx.EXPAND|wx.ALL, 5)
        self.SetSizer(sizer)

    def OnClick(self, event):
        # 获取用户输入的文本
        input_text = self.input_text.GetValue()

        # 创建打字效果
        self.typewriter = Typewriter(input_text, self.output_text)
        self.typewriter.type_message()

class Typewriter:
    def __init__(self, message, textctrl):
        self.message = message
        self.textctrl = textctrl

    def type_message(self):
        for char in self.message:
            self.textctrl.WriteText(char)
            self.textctrl.Refresh()
            time.sleep(0.05)

# 创建应用程序
app = wx.App()
frame = TypewriterFrame(None, title="打字效果程序")
frame.Show()
app.MainLoop()

源代码说明:

在这个程序中,我们创建了一个名为TypewriterFrame的新窗口,它继承自wx.Frame类。在窗口中,我们创建了一个wx.TextCtrl控件,用于用户输入,一个wx.TextCtrl控件,用于显示打字效果,以及一个wx.Button控件,用于触发显示打字效果的事件。我们还实现了一个OnClick方法,该方法会在用户点击按钮时被触发。该方法首先获取用户在输入控件中输入的文本,然后创建一个Typewriter对象,并调用其type_message方法来显示打字效果。

Typewriter类中,我们定义了一个type_message方法,它遍历消息字符串中的每个字符,并使用wx.TextCtrlWriteText方法将其写入打字效果控件中。在每个字符之后,我们调用wx.TextCtrlRefresh方法来刷新打字效果,并使用time.sleep方法暂停0.05秒,以创建打字效果。

最后,我们创建了一个wx.App应用程序对象,创建了一个TypewriterFrame窗口,并调用app.MainLoop()方法来启动应用程序的事件循环。

现在,当我们运行这个程序时,它将显示一个窗口,其中包含一个文本框和一个按钮。当用户在文本框中输入一段文本并点击按钮时,程序将在下方文本框中以打字的效果重新呈现输入的文本。

效果如下所示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

尚硅谷大数据技术Hadoop教程-笔记04【Hadoop-MapReduce】

视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】尚硅谷大数据技术Ha…

DPU02国产USB转UART控制芯片替代CP2102

目录DPU02简介DPU02芯片特性应用DPU02简介 DPU02是高度集成的USB转UART的桥接控制芯片,该芯片为RS-232设计更新为USB设计,并简化PCB组件空间提供了一个简单的解决方案。       DPU02包括了一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带…

HTML3.1表格

一、表格标签(行列的单元格方式整齐展示数据) 属性值&#xff1a; 标签名说明table 整体&#xff0c;包裹多个tr tr行&#xff0c;包裹tdtd单元格&#xff0c;包裹内容 注&#xff1a;标签嵌套关系&#xff1a;table>tr>td 代码&#xff1a; <!DOCTYPE html> &…

37岁测试工程师被裁,120天没找到工作,无奈...

从短期来看&#xff0c;程序员的确算是个不错的工作&#xff0c;薪水也比一般岗位高很多&#xff0c;但是从长远来看&#xff0c;程序员的中年危机会比其他岗位来的更早&#xff0c;很多程序员只有到了35岁左右&#xff0c;才能真正认清楚互联网行业&#xff0c;尤其是被裁之后…

日撸 Java 三百行day23-24

文章目录说明day23 使用具有通用性的队列1.复用技术2.包装类3.java内存分配4.代码day24 二叉树的建立1.思路2.代码说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff…

看完这篇 教你玩转渗透测试靶机vulnhub——My File Server: 2

Vulnhub靶机My File Server: 2渗透测试详解Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;FTP匿名登入③&#xff1a;SSH私钥登入④&#xff1a;SMB共享…

超详细从入门到精通,pytest自动化测试框架实战-测试运行钩子(七)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 pytest中用例执行相…

数据的表示和存储——

目录 浮点数的编码表示 浮点数类型 ​编辑 浮点数的表示 &#xff08;1&#xff09;浮点数&#xff08;Float Point&#xff09;的表示范围 &#xff08;2&#xff09;规格化数形式 &#xff08;3&#xff09;IEEE 754标准 其他形式的机器数表示 个人总结 浮点数的编码表…

深度学习_Learning Rate Scheduling

我们在训练模型时学习率的设置非常重要。 学习率的大小很重要。如果它太大&#xff0c;优化就会发散&#xff0c;如果它太小&#xff0c;训练时间太长&#xff0c;否则我们最终会得到次优的结果。其次&#xff0c;衰变率同样重要。如果学习率仍然很大&#xff0c;我们可能会简…

MySQL NDB Cluster使用docker compose一键部署

本文主要用来学习MySQL NDB Cluster 解决学习过程中的痛点&#xff1a;需要开启N台VMware虚拟机&#xff0c;电脑不堪重负 使用docker部署&#xff0c;完美解决 本文使用的docker image: mysql/mysql-cluster:8.0 创建mysql_cluster目录&#xff0c;后续操作都在这个目录下 …

基于html+css的盒子展示7

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

系统集成项目管理工程师软考第三章习题(每天更新)

第一章指路&#xff1a;系统集成项目管理工程师软考第一章习题&#xff08;已完结&#xff09;_程序猿幼苗的博客-CSDN博客 第二章指路&#xff1a;系统集成项目管理工程师软考第二章习题&#xff08;已完结&#xff09;_程序猿幼苗的博客-CSDN博客 第3章信息系统集成专业技术…

基于密集学习的半监督目标检测

文章目录Dense Learning based Semi-Supervised Object Detection摘要本文方法实验结果Dense Learning based Semi-Supervised Object Detection 摘要 提出了一种基于密集学习(DSL)的无锚点的半监督目标检测算法用于分配多层级和精确的密集像素伪标签的自适应过滤器用于生成稳…

C++13:搜索二叉树

目录 搜索二叉树概念 模拟实现搜索二叉树 插入函数实现 插入函数实现&#xff08;递归&#xff09; 查找函数实现 删除函数实现 删除函数实现&#xff08;递归&#xff09; 中序遍历实现 拷贝构造函数实现 析构函数实现 赋值重载 我们在最开始学习二叉树的时候&#xff0c;…

【网络】Internet 协议版本 6 (IPv6)

文章目录IPv6 寻址文本表示形式地址类型IPv6 路由邻居发现IPv6 自动配置自动配置类型IPv6 移动性禁用或启用 IPv6配置步骤代码启用操作系统启用来源Internet 协议版本 6 (IPv6) 是 Internet 的网络层的标准协议套件。 IPv6 旨在解决当前版本的 Internet 协议套件&#xff08;称…

二叉树前中后层遍历(递归/非递归)(简单易懂(*^ー^))

文章目录二叉树的遍历1 先序遍历1.1 递归1.2 非递归2 中序遍历2.1 递归2.2 非递归3 后序遍历3.1 递归3.2 非递归4 层序遍历5 前中后层序完整可运行代码&#xff08;C&#xff09;二叉树的遍历 1 先序遍历 1.1 递归 先序遍历(Preorder Traversal)&#xff0c;即根左右的顺序遍…

Anaconda3安装配置/创建删除虚拟环境/在特定虚拟环境下安装库

1. Anaconda3彻底卸载 先说Anaconda3的卸载&#xff0c;在Anaconda3安装路径下有一个Uninstall-Anaconda3.exe&#xff0c;右键以“管理员身份运行”&#xff0c;可执行完全卸载 2. 下载与安装Anaconda3 官网地址https://repo.anaconda.com/ 点击Anaconda Distribution&…

自学大数据第14天NoSQL~MongoDB及其命令

这几天主要是看了一下mongodb的一些知识,网上也有一些教程,今天主要是复习一下mongodb 启动mongodb 在连接mongodb前首先要创建数据存放目录与日志存放目录,还得保证当前用户对这两个目录有相应的读写操作 mongod --dbpath/usr/local/mongodb/data/db/ --logpath/usr/lcoal/mon…

(四)【软件设计师】计算机系统—基础单位进制

文章目录一、计算机基础单位二、进制1.进制表示符号2.进制之间的转换&#xff1a;(1)十进制转换为二进制&#xff08;例子&#xff1a;173&#xff09;(2)十进制转换为八进制&#xff08;3&#xff09;十进制转换为十六进制&#xff08;4&#xff09;二进制转换为十进制&#x…

Linux入门 - 最常用基础指令汇总

目录 ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令 && rm 指令 man指令&#xff08;重要&#xff09; cp指令&#xff08;重要&#xff09; mv指令&#xff08;重要&#xff09; cat指令 more指令 less指令&#xff08;重要&#xff09; head指令…