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窗口已经完成了。

原文地址:https://www.cnblogs.com/smart-zihan/p/9465309.html

时间: 2024-10-15 16:08:43

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

iOS_28仿QQ空间登录与退出

最终效果图如下: 注意事项: 输入框的return Key Main.storyboard中为 LoginController 设置一个storyboardID, 以便可以在代码中通过Storyboard对象实例,创建Main.storyboard里面的控制器 仿QQ窗口抖动 dispach_after模拟延时 输入框的return Key的不同处理方式 Login控制器代码 // // LoginController.m // 28_QQ空间 // // Created by beyond o

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

上一篇高仿QQ即时聊天软件开发系列之二登录窗口界面写了一个大概的布局和原理 这一篇详细说下拉框的实现原理 先上最终效果图 一开始其实只是想给下拉框加一个placeholder效果,让下拉框在未选择未输入时显示一个提示字符串.由于Background对ComboBox无效,所以直接通过Background来实现是不行了.需要重新写ComboBox的模板,也就是Template,自定义一个模板来实现这个结果.又看了一下QQ的下拉框,这玩意不自定义也难以实现,所以就干脆自定义了. 先上代码,先是Com

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

继上一篇高仿QQ即时聊天软件开发系列之一开端之后,开始做登录窗口 废话不多说,先看效果,只有界面 可能还有一些细节地方没有做,例如那个LOGO嘛,不要在意这些细节 GIF虽短,可是这做起来真难,好吧因为我没玩过WPF所以难,因为感觉做出来之后也就那样 整体布局 整体是上下分,下面是左中右分 1 <Grid> 2 <Grid.RowDefinitions> 3 <RowDefinition Height="27"><!--用于放窗口右上角关闭.最

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

1.前言 本次实现的这个聊天工具是我去年c#程序设计课程所写的Socket仿QQ聊天,由于当时候没有自己的服务器,只能在机房局域网内进行测试,最近在腾讯云上买了一台云主机(本人学生党,腾讯云有个学生专享活动一元一个月的云服务器,如果还是学生的可以试一下,地址http://www.qcloud.com/event/qcloudSchool),经过重新编码实现了广域网聊天的功能.下面开始介绍我的自制聊天软件啦!!! 2.功能 1. 聊天室服务器端的创建. 2. 聊天室客户端的创建. 3. 实现客户与

仿QQ聊天软件2.0版

仿QQ聊天软件2.0版 转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907     上次课设做了Java版的仿QQ聊天程序,这次软件实训,我们继续完善了仿QQ聊天程序,将上次未完成及不完善的地方进行完善和改进,还新加了部分功能:表情输入.气泡模式.文件传输.截屏.语音聊天.逐步向QQ的基本功能靠齐.通过这次软件实训,又有了很多收获. 一.设计内容及要求 1.1综述 A.系统概述 我们要做的就是类似QQ这样的面向企业内部的聊天软件,基本功能和QQ类似.首先,

android 自定义控件二之仿QQ长按删除

自定义Dialog 1.先上个效果图: 虽然效果丑了点,但主要学习修改已有的控件,例如修改Dialog控件 2.一些基本的只是进行了解 Dialog: theme是Dialog的样式,常用样式为: <style name="MyDialogStyle" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> &l

自制window下core animation引擎 - demo第二弹 - 仿QQ电脑管家加速小火箭

一年前想写一个像cocoa那样,可以方便层动画开发的引擎,写着写着又逆向它的QuartzCore.framework,也就是CoreAnimation的底层,已经大半年没有搞windows这个引擎.大体来看,动画简单来说有9要素,矩形区域(x, y, w, h),仿射变换矩阵(translation, rotation, scale),还有就是透明度alpha,除此还必须有线性变化函数.这些在cocoa中构成了最基本的动画,也最常用,通常提交动画一个始态,一个终态,以及时间就OK了.有次序的动画

高仿QQ头像截取

花费了半天时间,把 仿QQ头像截取的方法整理了下,并制作了一个demo以供大家参考,基本上实现了qq中我的资料界面上(包括背景透明化,上滑标题栏显示,下拉隐藏等)的大致效果,先上图看效果吧: 支持的功能: 1.选择裁剪的图片支持手势放大缩小(包括双击放大缩小): 2.判断图片边缘,即裁剪区域不会超过图片边缘: 原理: 一个重写的RelativeLayout,里面放了两层View,下层是重写的支持缩放的ImageView用于放置选择裁剪的图片,ImageView上层是一个自定义View,通过onD

安卓开发之Kotlin和java双实现仿qq空间下拉图片拉伸

先不扯淡看今天要实现的效果: 话说使用Kotlin实现安卓功能,那我们还是要做一点准备工作,so,你得加一点插件到eclipse或android studio.然并卵,你现在还在使用eclipse开发的话我只能提供地址Kotlin Plugin for Eclipse,然后我使用的还是死丢丢. 死丢丢(android studio)集成kotlin安卓开发 要使用android studio开发kotlin的安卓app,那么你必须有开发kotlin的环境: Kotlin插件.打开Android