# 一定要定义编码
# -*- coding: UTF-8 -*-
# 【1】导入库tkinter库,不弄别名简称
import tkinter
# 导入提示库,不弄别名简称
import tkinter.messagebox
# 新导入库,用于pillow,支持各种后缀的图片
from PIL import ImageTk,Image
# 防止二级制运算的精度丢失
import decimal
from decimal import Decimal
# --------自定义按钮对应的函数--开始--------------- #
# 跟字典有关的函数
# 声明1个空的字典
ZiDian1={}
# 声明多个不同情况的字典的键和值
# 字典里的键只能是“数字”、“字符串”、“元组列表”
# 所谓字典里的“键”就是“索引”,下面是字典举例
ZiDian2={1:"AAA",2:"BBB",3:"CCC"}
ZiDian3={"A":"张三","B":333,"CC":"ABC"}
ZiDian4={(12,"张三",True):"Python编程改造生活",(88,"李四",True):"Python提升工作效率"}
# 声明1个空列表
LieBiao1=[]
i=0
def AnNiu1_JRZiDian_DianJi():
global i
i+=1
global ZiDian1
ZiDian1["n"+str(i)]=DanHangWenBenKuang1.get()
DuoHangWenBenKuang1.insert(tkinter.END,str(ZiDian1))
pass
# 跟列表有关的函数
def AnNiu2_JRLieBiao_DianJi():
LieBiao1.append(DanHangWenBenKuang1.get())
DuoHangWenBenKuang2.insert(tkinter.END, str(LieBiao1))
pass
# 查询字典的函数
def AnNiu3_CXZiDian_DianJi():
if(DanHangWenBenKuang1.get() in ZiDian1):
tkinter.messagebox.showinfo("字典查询结果","存在!值为:"+str(ZiDian1[DanHangWenBenKuang1.get()]))
else:
tkinter.messagebox.showinfo("字典查询结果", "不存在")
pass
# 查询列表的函数
def AnNiu4_CXLieBiao_DianJi():
if (DanHangWenBenKuang1.get() in LieBiao1):
tkinter.messagebox.showinfo("列表查询结果", "存在")
else:
tkinter.messagebox.showinfo("列表查询结果", "不存在")
pass
# --------自定义按钮对应的函数--结束--------------- #
# 【1】创建软件窗口实体,窗体
chuangkou1=tkinter.Tk()
# 【2】软件界面顶部显示名称以及版本号
chuangkou1.title("引入字典-开发实战")
# 【3】软件的长宽、在当前桌面屏幕的左边距、顶上边距
# 定义窗口自身宽度
ck1w=800
# 定义窗口自身高度
ck1h=600
# 获取屏幕宽度
pmw=chuangkou1.winfo_screenwidth()
# 获取屏幕高度
pmh=chuangkou1.winfo_screenheight()
# 计算水平方向的起点位置坐标
x1=pmw/2-ck1w/2
# 计算垂直方向的起点位置坐标
y1=pmh/2-ck1h/2
# 设置窗体所在屏幕的坐标位置
chuangkou1.geometry("%dx%d+%d+%d"%(ck1w,ck1h,x1,y1))
# 【4】软件界面窗体的背景属性,背景颜色改成绿色,绿色的颜色属性值
chuangkou1["background"]="#BBBCCC"
# 【5】软件界面左上角的ico图标
chuangkou1.iconbitmap('./pic1/logo_ico.ico')
# 开始正式编辑代码↓↓↓↓
# 定义1个frame,把chuangkou1放进去
frame1=tkinter.Frame(chuangkou1)
frame1.pack(anchor=tkinter.NW)
# 先定义1个单行文本
DanHangWenBen1=tkinter.Label(frame1,text="输入:")
DanHangWenBen1.pack(side="left",anchor=tkinter.NW)
# 定义1个单行文本框
DanHangWenBenKuang1=tkinter.Entry(frame1)
DanHangWenBenKuang1.pack(anchor=tkinter.NW,pady=5)
# 定义1个frame,把chuangkou1放进去
frame2=tkinter.Frame(chuangkou1)
frame2.pack(anchor=tkinter.NW)
# 增加1个按钮:“录入到字典”
AnNiu1=tkinter.Button(frame2,text="加入字典",command=AnNiu1_JRZiDian_DianJi)
AnNiu1.pack(side="left",anchor=tkinter.NW,padx=20)
# 增加1个按钮:“加入到列表”
AnNiu2=tkinter.Button(frame2,text="加入列表",command=AnNiu2_JRLieBiao_DianJi)
AnNiu2.pack(side="left",anchor=tkinter.NW,padx=10)
# 增加1个按钮,“查询字典”
AnNiu3=tkinter.Button(frame2,text="查询字典",command=AnNiu3_CXZiDian_DianJi)
AnNiu3.pack(side="left",anchor=tkinter.NW,padx=20)
# 增加1个按钮,“查询列表”
AnNiu4=tkinter.Button(frame2,text="查询列表",command=AnNiu4_CXLieBiao_DianJi)
AnNiu4.pack(side="left",anchor=tkinter.NW,padx=20)
# 定义1个frame,把chuangkou1放进去
frame3=tkinter.Frame(chuangkou1)
frame3.pack(anchor=tkinter.NW)
# 增加单行文本
DanHangWenBen2=tkinter.Label(frame3,text="字典:")
DanHangWenBen2.pack(side="left",anchor=tkinter.NW)
# 增加多行文本框1
DuoHangWenBenKuang1=tkinter.Text(frame3,height=5)
DuoHangWenBenKuang1.pack(anchor=tkinter.NW,padx=10,pady=10)
# 定义1个frame,把chuangkou1放进去
frame4=tkinter.Frame(chuangkou1)
frame4.pack(anchor=tkinter.NW)
# 增加单行文本
DanHangWenBen3=tkinter.Label(frame4,text="列表:")
DanHangWenBen3.pack(side="left",anchor=tkinter.NW)
# 增加多行文本框2
DuoHangWenBenKuang2=tkinter.Text(frame4,height=5)
DuoHangWenBenKuang2.pack(anchor=tkinter.NW,padx=10,pady=10)
# ------末尾必须放死循环代码---分割线------ #
# 【End.1】持续显示软件界面,相当于死循环,↓
# 【End.1】这个窗体的作用是监听这个界面发生的一切事件,包括鼠标点击动作。
# 【End.1】下面这个死循环代码必须放在最后面。
chuangkou1.mainloop()