tkinter的简单应用
时间:2022-07-25
本文章向大家介绍tkinter的简单应用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
from tkinter import Tk,messagebox,Toplevel
import tkinter as tk
my_window=Tk()
my_window.title("登陆")
screen_width,screen_height=my_window.maxsize()
width=250
height=200
align_str="%dx%d+%d+%d" % (width,height,(screen_width-width)/2,(screen_height-height)/2)
my_window.geometry(align_str)
my_window.resizable(width=False, height=False)
#添加标签
user_name_label=tk.Label(my_window,text="账号",font=("Fangsong",14))
user_name_label.place(x=30,y=30)
user_pwd_label=tk.Label(my_window,text="密码",font=("Fangsong",14))
user_pwd_label.place(x=30,y=80)
#输入框
#账号输入
user_name_text=tk.StringVar()
user_name_text.set("输入账号")
user_name_entry=tk.Entry(my_window,textvariable=user_name_text,font=("Fangsong",14),width=15)
user_name_entry.place(x=80,y=30)
#密码输入
user_pwd_text=tk.StringVar()
user_pwd_text.set("输入密码")
user_pwd_entry=tk.Entry(my_window,textvariable=user_pwd_text,font=("Fangsong",14),width=15)
user_pwd_entry.place(x=80,y=80)
#数据读取
def read_data():
with open("data.txt","r") as f:
rows=f.readlines()
user_info_dict={}
for row in rows:
dict_list=row.strip().split(":")
user_info_dict[dict_list[0]]=dict_list[1]
f.close()
return user_info_dict
#登陆按钮时间处理回调
def user_login():
#获取用户输入账号密码
name=user_name_text.get()
pwd=user_pwd_text.get()
user_dict=read_data()
if name != "" and pwd !="":
if name in user_dict.keys():
if pwd == user_dict[name]:
messagebox.showerror(title="成功",message="欢迎"+name)
print("ok")
else:
messagebox.showerror(title="错误",message="密码错误")
# print("密码不正确")
else:
messagebox.showerror(title="错误",message="用户不存在")
# print("用户不存在")
else:
messagebox.showerror(title="错误",message="用户名、密码不能为空")
# print("账号、密码不能为空")
#弹出注册窗体
def pop_win():
top=Toplevel()
top.title("注册")
top.geometry("250x200")
#账号、密码、确认密码、注册按钮
#布局方式
tk.Label(top,text="账号",width=10).grid(row=1,column=0)
user_name=tk.StringVar()
tk.Entry(top,textvariable=user_name,width=15).grid(row=1,column=1)
tk.Label(top,text="密码",width=10).grid(row=2,column=0)
user_pwd=tk.StringVar()
tk.Entry(top,textvariable=user_pwd,width=15).grid(row=2,column=1)
tk.Label(top,text="确认密码",width=10).grid(row=3,column=0)
user_confirm_pwd=tk.StringVar()
tk.Entry(top,textvariable=user_confirm_pwd,width=15).grid(row=3,column=1)
#注册按钮的回调函数
def user_register():
#获取输入框的值
name=user_name.get()
pwd=user_pwd.get()
confirm_pwd=user_confirm_pwd.get()
if pwd==confirm_pwd:
with open("data.txt","a") as f:
f.writelines(name+":"+pwd+"n")
f.flush()
f.close()
messagebox.showinfo(title="成功",message="注册成功")
#销毁窗体
top.destroy()
else:
messagebox.showerror(title="错误",message="两次密码不一致")
tk.Button(top,text="注册",width=10,command=user_register).grid(row=4,columnspan=2,pady=15)
#按钮
#登陆按钮
user_login_button=tk.Button(my_window,text="登陆",font=("Fangsong",14),command=user_login)
user_login_button.place(x=30,y=130)
#注册按钮
user_reg_button=tk.Button(my_window,text="注册",font=("Fangsong",14),command=pop_win)
user_reg_button.place(x=130,y=130)
my_window.mainloop()
# print(read_data())
- python编码问题
- 微信支付推出人脸识别智慧时尚试衣间,无感购物即将来袭
- 如何判断你买的域名有没有被K过?
- 【设计模式】Factory模式
- Windows:将cmd命令行添加到右键中方法
- 回家的低价票难抢?注意!可能是被“爬虫”吃了
- DeepMind团队回顾2017年:想象、推理取得突破
- flask-mail发送QQ邮件代码示例(亲测可行)
- 数据结构与算法C#版笔记--排序(Sort)-下
- pip --upgrade批量更新过期的python库
- 数据结构与算法C#版笔记--排序(Sort)-上
- android 模拟器安装二三事
- 2017小程序发展大事件和未来3大趋势分析
- [复习]The C Programming Language 2nd 习题集(1.1-1.10)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 打卡群刷题总结0801——解码方法
- 动手写简单的嵌入式操作系统二
- C++核心准则E.6:使用RAII防止资源泄露
- C++核心准则E.12: 当不可能或不愿意通过抛出异常退出函数时使用noexcept
- C++核心准则E.13: 直接拥有一个对象所有权时永远不要抛出异常
- C++核心准则E.14:使用根据目的设计的用户定制类型异常(非内置类型)
- C++核心准则E.16:析构函数,内存释放和swap操作永远不能失败
- Eclipse配合GDB和jlinkGDBServer仿真调试STM32
- 单片机程序构架
- 打卡群刷题总结0730——格雷编码
- 常用的vim配置,_vimrc文件
- 算法篇:链表之删除和为0的元素
- 算法篇:链表之反转链表
- 算法篇:链表之排序
- 算法篇:链表之删除链表中重复节点