GUI制作仿qq窗口
使用工具: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窗口的更多相关文章
- Android仿QQ窗口的抖动的动画效果
就是仿照QQ窗口的抖动效果,在项目的res下创建anim文件夹,再创建两个xml文件:cycle.xml . myanim.xml cycle.xml : <?xml version ...
- 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框
上一篇高仿QQ即时聊天软件开发系列之二登录窗口界面写了一个大概的布局和原理 这一篇详细说下拉框的实现原理 先上最终效果图 一开始其实只是想给下拉框加一个placeholder效果,让下拉框在未选择未输 ...
- 高仿QQ即时聊天软件开发系列之二登录窗口界面
继上一篇高仿QQ即时聊天软件开发系列之一开端之后,开始做登录窗口 废话不多说,先看效果,只有界面 可能还有一些细节地方没有做,例如那个LOGO嘛,不要在意这些细节 GIF虽短,可是这做起来真难,好吧因 ...
- 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口
印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好.经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ ...
- JS简单仿QQ聊天工具的制作
刚接触JS,对其充满了好奇,利用刚学到的一点知识,写了一个简单的仿QQ聊天的东西,其中还有很多的不足之处,有待慢慢提高. 功能:1.在输入框中输入内容,点击发送,即可在上方显示所输入内容. 2.点击‘ ...
- < JAVA - 大作业(2)仿qq即时通讯软件 >
< JAVA - 大作业(2)仿qq即时通讯软件 > 背景 JAVA上机大作业:设计一个仿qq即时通讯软件 任务简要叙述:设计一款仿QQ的个人用户即时通讯软件,能够实现注册,登陆,与好友聊 ...
- 仿QQ大战—界面篇
之前在<仿QQ大战-服务器的搭建(ServerSocket)>中实现了服务器的搭建,以及一个简单地传递数据的实现,现在就是来实现类似与QQ聊天通信的功能.首先是界面的实现: 首先:服务器和 ...
- Socket实现仿QQ聊天(可部署于广域网)附源码(1)-简介
1.前言 本次实现的这个聊天工具是我去年c#程序设计课程所写的Socket仿QQ聊天,由于当时候没有自己的服务器,只能在机房局域网内进行测试,最近在腾讯云上买了一台云主机(本人学生党,腾讯云有个学生专 ...
- 用duilib制作仿QQ2013动态背景登录器
转载请说明原出处,谢谢~~ 在上一篇博客里,我修复了CActiveXUI控件的bug,从而可以使用flash动画来制作程序的背景,这篇博客说明一下应该怎么使用CActiveXUI控件创建透明无窗体的背 ...
随机推荐
- Redis五大数据类型
首先说明下,Redis是:单线程+多路IO复用技术!!! string set > key + zset list hash 常用的几个命令: >keys * 查 ...
- RN 实战 & React Native 实战
RN 实战 & React Native 实战 https://abc.xgqfrms.xyz/react-native-docs/ 0.59 https://github.com/xgqfr ...
- jvm相关参数
官方地址:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html#BEHHGFAE 一.查看jvm运行参数 1.查看 ...
- 使用电脑adb给Essential Phone刷机 —(官方篇)
用ADB给Essential Phone线刷升级 重要:请确保在刷机前已经解锁,关于解锁教程群里有! 准备 原版boot Twrp boot Magisk卡刷包 到官网下载OTA包 准备好Essent ...
- 思路 一般创建展示类时候 例如page类 会在网页上新增多个对应字段的隐藏域 用于存储值
思路 一般创建展示类时候 例如page类 会在网页上新增多个对应字段的隐藏域 用于存储值
- codeforces630C
Lucky Numbers CodeForces - 630C 小希称只含7和8的数是幸运数,那么不超过n位的幸运数有多少个? Input 一个整数 n (1 ≤ n ≤ 55) Output 输出幸 ...
- Android PowerManager电源管理(Android N )
./frameworks/base/core/java/android/os/PowerManager.java该类提供给Application访问电源相关接口. 它的内部类WakeLock是定义的唤 ...
- java 转义字符"\u0010" "\010" "\2"等
java转义字符 \xxx 八进制转义符 \uxxxx 十六进制转义符 像"\010","\u0010"这种字符 ...
- float数组转字符串实施方案小记
float[] floats = {1.2f , 3.5f , 6.4f}; Double[] doubles = IntStream.range(0, floats.length).mapToDou ...
- BZOJ5417[Noi2018]你的名字——后缀自动机+线段树合并
题目链接: [Noi2018]你的名字 题目大意:给出一个字符串$S$及$q$次询问,每次询问一个字符串$T$有多少本质不同的子串不是$S[l,r]$的子串($S[l,r]$表示$S$串的第$l$个字 ...