网上找博客找了很久,大家对于PYTHON GUI的介绍都很简单,举得例子也都很基础。

有个BUG卡了我2天,就是因为举得例子太简单,不能满足我的需要。

这里需要说明一下,网上的例子基本不是面向对象的GUI开发,我用的是面向对象,所以在调试过程中会出现很多问题。

卡我两天,然后自己解决还是蛮激动的。

首先上我的界面构图

阐述一下设计图,root 构成主界面/   \放canvas1 frame1  frame2  放下面杂七杂八的按钮和文本框/       \    \嵌入图片的canvas1    frame3放置canvas2    按钮文本框也都放在frame2中/嵌入头像的canvas2# -*-coding:utf-8-*
from PIL import ImageTk as itk          #这里需要安装PIL使用到ImageTk和Image两个板块,是为了将图片放在canvas画布上
from PIL import Image as Img
from Tkinter import *                   #这里需要安装Tkinter
import sql.sql_connect as s
import Tkinter as tk
class Login_UI(Frame):           # 登录事件def load(self,event):id = self.usr.get()id = int(id)pwd = self.pwd.get()s.log_information.connect(id,pwd)#注册事件def regiser(self,event):id = input("Enter your id")name = input("Enter your name")pwd = input("Enter your password")s.log_information.Create_new_usr(id,name,pwd)#找回密码事件def fg_pwd(self,event):id = self.usr.get()id = int(id)s.log_information.Find_pwd(id)def __init__(self):self.root = Tk()              #主界面rootvar1 = StringVar()            #id框中的文字var2 = StringVar()            #密码框中的文字#======查询历史登录信息并显示在文本框内======result = s.log_information.last_inf(self)var1.set(result[0])var2.set(result[1])#=======================================self.root.geometry('415x320')   #设置主界面大小self.root.title("login_ui")     #设置主界面名称#QQ登录主界面分成两行一列#================背景图==================   组件.grid(row = x,column = y) 将组件放入root中(x,y)位置f = Frame(width=520, height=150, bg='green')     #frame1canvas = tk.Canvas(self.root, width=520, height=150, bg='yellow')  #canvas1self.img = itk.PhotoImage(file = "picture/log.png")   #将图片转换成PIL.Imagetk.PhotoImage格式canvas.create_image(205, 75, image=self.img)          #canvas1载入图片canvas.grid(row=0, column=0, columnspan=2, padx=1, pady=3) #canvas1放置在root的第一行第一列#=======================================#================下灰框==================f = Frame(width=520, height=220, bg='#DCDCDC') #frame2f_head = Frame(width=80, height=80, bg='green') #frame3#=======================================#=================头像===================self.canvas2 = tk.Canvas(self.root, width=80, height=80, bg='red')self.img2 = Img.open("picture/headphoto.png")  self.img2 = itk.PhotoImage(self.img2)self.canvas2.create_image(40, 40, image=self.img2)self.canvas2.place(in_=f_head, anchor=NW)  #canvas2放入frame3中,位置是偏西北f_head.place(relx=0.10, rely=0.56)         #frame3放入root的绝对位置上#=======================================#===============用户账号==================  Entry1直接放入root的绝对位置上,也可以尝试放入frame2中self.usr = Entry(self.root, textvariable=var1, bg='#F5F5F5', highlightcolor='#1E90FF')self.usr.place(relx=0.35, rely=0.56)# =======================================#===============密码框==================== Entry2 直接放入root的绝对位置上self.pwd = Entry(self.root, textvariable=var2, bg='#F5F5F5', highlightcolor='#1E90FF')self.pwd['show'] = 'x'self.pwd.place(relx=0.35, rely=0.65)# =======================================#==============找回密码=================== checkbutton 放入绝对位置rem_pwd = Checkbutton(self.root, foreground='#1E90FF').place(relx=0.35, rely=0.72)rem_pwd_lab = Label(self.root, width=13, text='rem_pwd', compound=LEFT, foreground='#808080', bg='#DCDCDC')rem_pwd_lab.place(relx=0.39, rely=0.72)# =======================================#=============登录按钮==================== button3放入绝对位置login_btn = Button(self.root, text='           login in         ', bg='#1E90FF')login_btn.place(relx=0.37, rely=0.8)login_btn.bind("<Button-1>",self.load)# =======================================#===============注册用户================== button1放入绝对位置fgt_usr_btn = Button(self.root, text='register', bg='#DCDCDC', foreground='#1E90FF')fgt_usr_btn.place(relx=0.7, rely=0.54)fgt_usr_btn.bind("<Button-1>",self.regiser)# =======================================#===============找回密码================= button2放入绝对位置fgt_pwd_btn = Button(self.root, text='forget userpawd', bg='#DCDCDC', foreground='#1E90FF')fgt_pwd_btn.place(relx=0.7,rely=0.64)fgt_pwd_btn.bind("<Button-1>",self.fg_pwd)# =======================================if __name__ == "__main__":ui = Login_UI()ui.root.mainloop()

执行效果图如下:

说明一下:canvas1的图片是截图下来的,canvas2的图片是80*80的,自己ps一下。

之后更新与数据库连接的操作实现注册用户,找回密码,登录检测,自动读取上一次登录的账号和密码的操作。

python实现数据库的操作

python 实战之模仿开发QQ聊天软件(一)登录GUI设计相关推荐

  1. python 实战之模仿开发QQ聊天软件(二)MySQL数据库的连接和使用

    上一篇说道QQ登录界面GUI的模仿设计 在自己的电脑上安装mysql. ctrl +shift +T,依次输入 sudo su apt-get install MySQL-client-core-5. ...

  2. python 实战之模仿开发QQ聊天软件(三)TCP/IP服务器与客户端建设

    无论是p2p还是c/s还是b/s,只要用到通讯,必然是要用到今天写的这个. python+MYSQL 在pycharm中的使用 TCP/IP是网络软件最核心的部分,缺少这个你只能当做单机游戏玩. TC ...

  3. 仿QQ聊天软件(登录界面、好友界面、聊天界面)-Java(Swing、Socket)

    文章目录 一.项目结构 二.项目功能 三.制作界面 (一).登录界面的制作 (二).好友列表界面 (三).聊天界面 四.制作服务器 五.设计通信协议 六.项目缺点 学习了socket通信后,就想来制作 ...

  4. 转载:仿QQ聊天软件2.0版

    仿QQ聊天软件2.0版 这是大神的地址:牟尼的专栏 http://blog.csdn.net/u012027907 详细的过程本人没看,但是看见他的实现效果,相当诱人!     上次课设做了Java版 ...

  5. 仿QQ聊天软件(JavaFX+云端数据库)

    仿QQ聊天软件(JavaFX+云端数据库) 这个项目是这学期(大二上学期学完Java后的期末项目),寒假闲着无聊就整理下发上来供大家学习以及参考啦(因为国内关于JavaFX的各种资料感觉都太浅了,本来 ...

  6. linux qq多进程客户端,基于多进程QQ聊天软件设计.doc

    基于多进程QQ聊天软件设计 基于多进程的QQ聊天程序设计功能需求描述用户名登陆聊天,人与人之间交流是必不可少的.私聊,与特定的用户聊天群聊,向所有的用户发送消息,大家一起聊欢乐多 server端 输入 ...

  7. 仿微信界面开发的聊天软件和聊天客户端功能介绍

    系统模式:独立系统版本,独立服务器部署,服务器配置:建议 4 核 8G:10M 带宽既可 以下是聊天系统客户端的功能介绍,服务端的功能我会再写一篇文章接着 仿微信聊天开发的聊天软件以及聊天客户端功能介 ...

  8. java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)

    既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后,就想做点什么项目锻炼下自己的技能.凑巧的是,我一个同样学java的朋友在做一个仿qq的项目,不过他做的实在太丑了. 然后他想让我也 ...

  9. 用Delphi开发视频聊天软件

    一.引言 我们知道视频聊天软件的关键技术在于采集视频,并实时传输给聊天软件在线的人.对于视频的采集,这里采用微软公司的关于数字视频的一个软件包VFW(Video for Windows).相信很多人对 ...

最新文章

  1. (0019)iOS 开发之关于__weak修饰NSString以及内存管理的问题
  2. 用HOOK禁用鼠标与键盘点击
  3. java双机调度_Haproxy+keepalive-群集架构实验
  4. 四大科技巨头跟随者众 智能家居市场容量可观
  5. 负责域名解析的DNS服务
  6. python读写xlsx文件_python读写Excel文件--使用xlrd模块读取,xlwt模块写入
  7. 关于ExtJs4的Grid带 查询 参数 分页(baseParams--extraParams)
  8. 实验三 Python表达式
  9. 如何安装PyAudio
  10. 511遇见易语言教程API模块制作cmd复制文件
  11. Java web 购物网站开发
  12. 小功能⭐️Unity动态更改 Scripting Define Symbols (宏定义)
  13. iptables路由转换
  14. 小程序入门第二课 — 组件与WXML语法
  15. Paper reading (三十二):Personalized Nutrition by Prediction of Glycemic Responses(Results)
  16. spring 项目启动完成执行_凝聚合力形成攻坚之势——21天顺利完成启动炉烟道改造施工项目...
  17. Android studio制作计算器源代码
  18. 1.线性回归(Tensorflow)
  19. ucharts动态渲染数据
  20. 网易云信的音频共享技术 | 体验共享专题

热门文章

  1. 使用 Drools 规则引擎实现业务逻辑
  2. ubu下编译安装php7
  3. 2018年固态硬盘会大规模降价吗?
  4. 认识 Fuchsia OS
  5. 关于居住办公人口的统计技术解决方案
  6. 软件开发中的英文单词缩写
  7. isEnable() 和 isDisplayed() 和 isSelected()
  8. 基于AWS 平台跳板机配置
  9. Excel表格如何输出为清晰图片
  10. Mac OS 如何让窗口显示在最前边,(用于录制屏幕提醒,以及屏幕分享,应用分享的UI窗口解决)