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之编写类之四再论继承
Oct 11 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python 编写简单网页服务器的实例
Jun 01 Python
NumPy 数组使用大全
Apr 25 Python
python中的句柄操作的方法示例
Jun 20 Python
Django 请求Request的具体使用方法
Nov 11 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python计算信息熵实例
Jun 18 Python
python如何调用php文件中的函数详解
Dec 29 Python
python中time tzset()函数实例用法
Feb 18 Python
python 如何获取页面所有a标签下href的值
May 06 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 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
一个目录遍历函数
2006/10/09 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
python3抓取中文网页的方法
2015/07/28 Python
Python 判断奇数偶数的方法
2018/12/20 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
python使用建议与技巧分享(一)
2020/08/17 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
strlen的几种不同实现方法
2013/05/31 面试题
周年庆典邀请函范文
2014/01/24 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
室内设计专业自荐信
2014/05/31 职场文书
经营场所使用证明
2015/06/19 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电