使用工具:python3.6,   pycharm

使用模块:

  tkinter模块:("Tk 接口")是Python的标准Tk GUI工具包的接口,位Python的内置模块,直接import tkinter即可使用

  time模块:用于时间显示

注:关于tkinter模块可以参考http://www.cnblogs.com/kaituorensheng/p/3287652.html

效果图:

如果想直接看所有代码,可以忽略之前所有,直接跳到第5步。

1.产生第一个窗口

from tkinter import *
import time
t = Tk()#实例化一个t对象
t.title('与星夜聊天中')#显示标题
t.mainloop()#命令,进入消息循环

看到的窗口可能没有显示完全标题,可以用鼠标拉伸窗口。

2.窗口已经有了,接下来就是布局,可以看到,窗口大概可以分为4个部分A,B,C,D.

from tkinter import *
import time
def main():
t = Tk()#实例化一个t对象
t.title('与星夜聊天中')#显示标题
#创建Frame容器
A = Frame(width=500, height=320, bg='white')
B = Frame(width=500, height=150, bg='white')
C = Frame(width=500, height=30)
D = Frame(width=200, height=500)
#使用grid布局
A.grid()
B.grid()
C.grid()
D.grid(row=0, column=1, rowspan=3, padx=2, pady=3)
t.mainloop()#命令,进入消息循环
if __name__ == '__main__':
main()

页面框架已经出来

3.添加控件按钮发送,取消

from tkinter import *
import time
def main():
t = Tk()#实例化一个t对象
t.title('与星夜聊天中')#显示标题
#创建Frame容器
A = Frame(width=500, height=320, bg='white')
B = Frame(width=500, height=150, bg='white')
C = Frame(width=500, height=30)
D = Frame(width=200, height=500)
#使用grid布局
A.grid()
B.grid()
C.grid()
D.grid(row=0, column=1, rowspan=3, padx=2, pady=3)
txtMsglist = Text(A) # 展示文本的框框
txtMsg = Text(B) # 编辑文字
# 按钮,以及图片展示
btnSend = Button(C, text='发送', width=8)
btnCancel = Button(C, text='取消', width=8)
imageLink = PhotoImage(file="oEfV-hhnunsq0909655.gif") # 只能打开gif,双引号里面可以写自己的图片目录
lblImage = Label(D, image=imageLink) # 显示文件或图片
btnSend.grid(row=2, column=1)
btnCancel.grid(row=2, column=2)
lblImage.grid()
txtMsglist.grid()
txtMsg.grid()
t.mainloop()#命令,进入消息循环
if __name__ == '__main__':
main()

按钮图片都已经出来了,不过大小改变了

4.插件都会延伸,根据内容自动调节大小,所以要固定大小

from tkinter import *
import time
def main():
t = Tk()#实例化一个t对象
t.title('与星夜聊天中')#显示标题
#创建Frame容器
A = Frame(width=500, height=320, bg='white')
B = Frame(width=500, height=150, bg='white')
C = Frame(width=500, height=30)
D = Frame(width=200, height=500)
#使用grid布局
A.grid()
B.grid()
C.grid()
D.grid(row=0, column=1, rowspan=3, padx=2, pady=3)
txtMsglist = Text(A) # 展示文本的框框
txtMsg = Text(B) # 编辑文字
# 按钮,以及图片展示
btnSend = Button(C, text='发送', width=8)
btnCancel = Button(C, text='取消', width=8)
imageLink = PhotoImage(file="oEfV-hhnunsq0909655.gif") # 只能打开gif,双引号里面可以写自己的图片目录
lblImage = Label(D, image=imageLink) # 显示文件或图片
btnSend.grid(row=2, column=1)
btnCancel.grid(row=2, column=2)
lblImage.grid()
txtMsglist.grid()
txtMsg.grid()
A.grid_propagate(0)
B.grid_propagate(0)
C.grid_propagate(0)
D.grid_propagate(0)
t.mainloop()#命令,进入消息循环
if __name__ == '__main__':
main()

大小固定了,基本框架已经完成

5.在发送窗口可以发送文字,也可以取消文字,显示窗口显示时间,人,消息。

from tkinter import *
import time def main():
#发送作用
def sendMsg():
strMsg = '我:' + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) + '\n'
txtMsglist.insert(END,strMsg)
txtMsglist.insert(END,txtMsg.get('0.0',END))
txtMsg.delete('0.0',END) #取消
def cancelMsg():
txtMsg.delete('0.0', END) t = Tk()#实例化对象
t.title('与星夜聊天中')
#1.创建frame容器,框架
A = Frame(width=500,height=320,bg='white')
B = Frame(width=500,height=150,bg='white')
C = Frame(width=500,height=30)
D = Frame(width=200,height=500) #2.布局
A.grid()
B.grid()
C.grid()
D.grid(row=0,column=1,rowspan=3,padx=2,pady=3)
#添加控件
#文本框----可以显示多行文本
txtMsglist = Text(A)#展示文本的框框
txtMsg = Text(B)#编辑文字 #按钮,以及图片展示
btnSend = Button(C,text='发送',width=8,command=sendMsg)
btnCancel = Button(C,text='取消',width=8,command=cancelMsg)
imageLink = PhotoImage(file="oEfV-hhnunsq0909655.gif")#只能打开gif
lblImage = Label(D,image=imageLink)#显示文件或图片 btnSend.grid(row=2,column=1)
btnCancel.grid(row=2,column=2)
lblImage.grid()
txtMsglist.grid()
txtMsg.grid()
#插件都会延申,根据内容自动调节大小,所以要固定大小
A.grid_propagate(0)
B.grid_propagate(0)
C.grid_propagate(0)
D.grid_propagate(0)
t.mainloop()#命令,进入消息循环 if __name__ == '__main__':
main()

仿qq窗口已经完成了。

GUI制作仿qq窗口的更多相关文章

  1. Android仿QQ窗口的抖动的动画效果

    就是仿照QQ窗口的抖动效果,在项目的res下创建anim文件夹,再创建两个xml文件:cycle.xml  . myanim.xml   cycle.xml  :   <?xml version ...

  2. 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框

    上一篇高仿QQ即时聊天软件开发系列之二登录窗口界面写了一个大概的布局和原理 这一篇详细说下拉框的实现原理 先上最终效果图 一开始其实只是想给下拉框加一个placeholder效果,让下拉框在未选择未输 ...

  3. 高仿QQ即时聊天软件开发系列之二登录窗口界面

    继上一篇高仿QQ即时聊天软件开发系列之一开端之后,开始做登录窗口 废话不多说,先看效果,只有界面 可能还有一些细节地方没有做,例如那个LOGO嘛,不要在意这些细节 GIF虽短,可是这做起来真难,好吧因 ...

  4. 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口

    印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好.经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ ...

  5. JS简单仿QQ聊天工具的制作

    刚接触JS,对其充满了好奇,利用刚学到的一点知识,写了一个简单的仿QQ聊天的东西,其中还有很多的不足之处,有待慢慢提高. 功能:1.在输入框中输入内容,点击发送,即可在上方显示所输入内容. 2.点击‘ ...

  6. < JAVA - 大作业(2)仿qq即时通讯软件 >

    < JAVA - 大作业(2)仿qq即时通讯软件 > 背景 JAVA上机大作业:设计一个仿qq即时通讯软件 任务简要叙述:设计一款仿QQ的个人用户即时通讯软件,能够实现注册,登陆,与好友聊 ...

  7. 仿QQ大战—界面篇

    之前在<仿QQ大战-服务器的搭建(ServerSocket)>中实现了服务器的搭建,以及一个简单地传递数据的实现,现在就是来实现类似与QQ聊天通信的功能.首先是界面的实现: 首先:服务器和 ...

  8. Socket实现仿QQ聊天(可部署于广域网)附源码(1)-简介

    1.前言 本次实现的这个聊天工具是我去年c#程序设计课程所写的Socket仿QQ聊天,由于当时候没有自己的服务器,只能在机房局域网内进行测试,最近在腾讯云上买了一台云主机(本人学生党,腾讯云有个学生专 ...

  9. 用duilib制作仿QQ2013动态背景登录器

    转载请说明原出处,谢谢~~ 在上一篇博客里,我修复了CActiveXUI控件的bug,从而可以使用flash动画来制作程序的背景,这篇博客说明一下应该怎么使用CActiveXUI控件创建透明无窗体的背 ...

随机推荐

  1. Linux用户权限指令, 定时任务等指令

    一. 网卡配置详解 网络配置文件: /etc/sysconfig/network 网络接口配置文件: /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NA ...

  2. Django的一些操作与视图函数

    一 . Django的安装 pip install django==1.14.6 # 后面的数字是django的版本 二 .  通过命令行(cmd)来创建Django项目 1. 切换到保存项目的文件夹 ...

  3. 多IP地址--笔记

    多IP 地址特性使虚拟用户可以在一个load generator上运行且被识别为多个IP地址 1 虚拟IP是同一个generator上的多个IP,这种分配过程由controller自动来进行 2 对于 ...

  4. 微信小程序支付功能

    API:wx.requestPayment() { } https://blog.csdn.net/qishubiao/article/details/80804052

  5. layui 提交表格不验证

    form.on('submit(filter_save)', function (data) { 后面查找发现是提交按钮要放在form里面

  6. Graphics

    Image img = Image.FromFile("g1.jpg");//建立Image对象Graphics g = Graphics.FromImage(img);//创建G ...

  7. Python学习之路——Day06 元组

    一.元组 t1 = (1, 2) t2 = tuple((1, 2)) t3 = (1, ) # 索引 | 切片 | 长度 # .count(obj) | .index(obj, bIndex, eI ...

  8. js数组中两个有相同删除一个

    for (var i = 0; i < project.Before.length; i++) {                    var j = 0;                   ...

  9. docker--Dockerfile-nginx

    # 基础镜像 FROM alpine # 作者信息 MAINTAINER NGINX Docker Maintainers "1024331014@qq.com" # 修改源 RU ...

  10. HDU1659-GCD-容斥原理

    从1-a和1-b种选两个数xy,计算出令gcd(x,y)=k的xy的对数. 对于每一个i∈[1,b]使用solve(i,n)函数解决有几个j∈[1,n]使gcd(x,y)=k.然后累加solve(i, ...