python的tkinter布局之简单的聊天窗口实现方法


Posted in Python onSeptember 03, 2014

本文实例展示了一个python的tkinter布局的简单聊天窗口。分享给大家供大家参考之用。具体方法如下:

该实例展示的是一个简单的聊天窗口,可以实现下方输入聊天内容,点击发送,可以增加到上方聊天记录列表中。现在只是“单机”版。
右侧预留了空位可以放点儿其它东西。感兴趣的读者可以进一步做成socket双方互聊。

以下是功能代码部分:

from Tkinter import *
import datetime
import time
root = Tk()
root.title(unicode('与xxx聊天中','eucgb2312_cn'))
#发送按钮事件
def sendmessage():
  #在聊天内容上方加一行 显示发送人及发送时间
  msgcontent = unicode('我:','eucgb2312_cn') + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) + '\n '
  text_msglist.insert(END, msgcontent, 'green')
  text_msglist.insert(END, text_msg.get('0.0', END))
  text_msg.delete('0.0', END)

#创建几个frame作为容器
frame_left_top   = Frame(width=380, height=270, bg='white')
frame_left_center  = Frame(width=380, height=100, bg='white')
frame_left_bottom  = Frame(width=380, height=20)
frame_right     = Frame(width=170, height=400, bg='white')
##创建需要的几个元素
text_msglist    = Text(frame_left_top)
text_msg      = Text(frame_left_center);
button_sendmsg   = Button(frame_left_bottom, text=unicode('发送','eucgb2312_cn'), command=sendmessage)
#创建一个绿色的tag
text_msglist.tag_config('green', foreground='#008B00')
#使用grid设置各个容器位置
frame_left_top.grid(row=0, column=0, padx=2, pady=5)
frame_left_center.grid(row=1, column=0, padx=2, pady=5)
frame_left_bottom.grid(row=2, column=0)
frame_right.grid(row=0, column=1, rowspan=3, padx=4, pady=5)
frame_left_top.grid_propagate(0)
frame_left_center.grid_propagate(0)
frame_left_bottom.grid_propagate(0)
#把元素填充进frame
text_msglist.grid()
text_msg.grid()
button_sendmsg.grid(sticky=E)
#主事件循环
root.mainloop()

以下是运行截图:

python的tkinter布局之简单的聊天窗口实现方法

希望本文所述对大家的Python程序设计有所帮助

Python 相关文章推荐
python实现的防DDoS脚本
Feb 08 Python
python采集博客中上传的QQ截图文件
Jul 18 Python
python登陆asp网站页面的实现代码
Jan 14 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
python添加模块搜索路径方法
Sep 11 Python
python实现windows壁纸定期更换功能
Jan 21 Python
Python高级特性与几种函数的讲解
Mar 08 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 Python
python脚本框架webpy模板赋值实现
Nov 20 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 Python
python中遍历文件的3个方法
Sep 02 #Python
python中的五种异常处理机制介绍
Sep 02 #Python
python之yield表达式学习
Sep 02 #Python
python中的hashlib和base64加密模块使用实例
Sep 02 #Python
python多线程编程中的join函数使用心得
Sep 02 #Python
python中的函数用法入门教程
Sep 02 #Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 #Python
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
深入理解Vue router的部分高级用法
2018/08/15 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
详解React 条件渲染
2020/07/08 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
树莓派实现移动拍照
2019/06/22 Python
Python实现微信机器人的方法
2019/09/06 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
小学生学习雷锋倡议书
2014/05/15 职场文书
投标承诺书怎么写
2014/05/24 职场文书
群教班子对照检查材料
2014/08/26 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
高三物理教学反思
2016/02/20 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js