#-- tkinter 一个跨平台的GUI库,对图形库TK的封装 可在win,linux或者mac下运行
 import tkinter
# linux用命令进行tkinter安装 sudo apt-get install python3-tk(python3-tk)
 root = tkinter.Tk()
 root.title('网格布局')
 root.minsize(300,300)
 root.resizable(False,False)
 # 从这写内容 #
 root.mainloop() 
#-- tkinter 布局
  pack() 方位布局
  place() 坐标布局
  grid() 网格布局"""
  padx/pady 组件外部在x(y)方向上填充的空间大小,默认单位为像素
  ipadx/ipady 组件内部在x(y)方向上填充的空间大小,默认单位为像素
  anchor : “n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”(默认“center”) 控制组件方位
"""
#pack 属性
  ipadx=10,ipady=10,padx=20,pady=100,anchor="ne"

#place 绝对属性
  x = 20,y = 20,width = 50,height = 50

#place 相对属性
  relx = 0.05,rely = 0.05,relwidth = 0.2,relheight = 0.2

#grid 属性
  row = 3,column = 0,ipadx = 50,ipady = 10,padx = 10,pady = 10,columnspan = 2 rowspan = 2=======================================================
import tkinter
# 生成一个窗口对象
root = tkinter.Tk()
# 设置窗口的标题
root.title("这是一个窗口")
# 设置窗口的大小
root.minsize(300,300) # 最小窗口大小
root.maxsize(600,600) # 最大窗口大小
# root.resizable(False,False) # 将窗口大小固定# pack 方位布局
# ipadx 横向填充 ipady 纵向填充
# anchor:e s w n ne nw se sw(默认center) 代表方位"""
btn1 = tkinter.Button(text="1")
btn1.pack(ipadx=10,ipady=10,padx=10,pady=10)
btn2 = tkinter.Button(text="2")
btn2.pack(idapx=10,idapy=10,padx=10,pady=10)
"""# side属性:lef right top bottom
"""
btn1 = tkinter.Button(text="1")
btn1.pack(ipadx=10,ipady=10,padx=10,pady=10,side="left")
btn2 = tkinter.Button(text="2")
btn2.pack(ipadx=10,ipady=10,padx=10,pady=10,side="left")
"""# place 坐标布局 
"""
 (1) 绝对布局
 (2) 相对布局
 x,y是坐标 width,height是宽度和高度
"""# place (绝对布局)
"""
btn1 = tkinter.Button(text="1")
btn1.place(x=20,y=20,width=50,height=50)
btn3 = tkinter.Button(text="3")
btn3.place(x=160,y=20,width=50,height=50)btn5 = tkinter.Button(text="5")
btn5.place(x=90,y=90,width=50,height=50)
btn7 = tkinter.Button(text="7")
btn7.place(x=20,y=160,width=50,height=50)btn9 = tkinter.Button(text="9")
btn9.place(x=160,y=160,width=50,height=50)
"""# place(相对布局)
"""
btn2 = tkinter.Button(text="2")
btn2.place(relx=0.3,rely=0.05,relwidth=0.2,relheight=0.2)btn4 = tkinter.Button(text="4")
btn4.place(relx=0.05,rely=0.3,relwidth=0.2,relheight=0.2)
btn6 = tkinter.Button(text="6")
btn6.place(relx=0.55,rely=0.3.relwidth=0.2,relheight=0.2)btn8 = tkinter.Button(text="8")
btn8.place(relx=0.3,rely=0.55,relwidth=0.2,relheight=0.2)
"""# gird 网格布局
"""
btn1 = tkinter.Button(text="1")
btn1.grid(row=0,column=0,ipadx=10,ipady=10,padx=10,pady=10)
btn2 = tkinter.Button(text="1")
btn2.grid(row=0,column=1,ipadx=10,ipady=10,padx=10,pady=10)
btn3 = tkinter.Button(text="1")
btn3.grid(row=0,column=2,ipadx=10,ipady=10,padx=10,pady=10)
"""
# columnspan 列合并(左右合并)
# rowspan 行合并(上下合并) 
"""
btn0 = tkinter.Button(text="0") 
btn0.grid(row=3,column=0,ipadx=120,ipady=10,padx=10,pady=10,columnspan=3)
btn_echo = tkinter.Button(text="=")
btn_echo.grid(row=0,column=3,ipadx=10,ipady=120,padx=10,pady=10,rowspam=3)
"""# frame
frame1 = tkinter.Frame(root,width=300,heght=50,bg="red")
frame1.pack(pady=5)btn1 = tkinter.Button(frame1,text="1")
btn1.pack(side="left",ipadx=5,ipady=10)
btn2 = tkinter.Button(frame1,text="2")
btn2.pack(side="left",ipadx=5,ipady=10)
btn3 = tkinter.Button(frame1,text="3")
btn3.pack(side="left",ipadx=5,ipady=10)# 固定显示窗口 (涉及队列)
root.mainloop()"""
 pack 方位布局
 参数:ipadx ipady padx pady anchor side
 place 坐标布局
 绝对布局参数:x y padx pady
 相对布局参数:relx rely relwidth relheight
 gird 网格布局
 参数:row column ipadx ipady padx pady rowspan columnspan
"""=======================================================
#Frame 属性
   #--划分页面
     frame1 = tkinter.Frame(root,height = 50,width = 300)
     frame1.pack_propagate(0) # 按照原定义宽高分布,不会随着其中内容的改变而改变
     frame1.pack(pady = 10) 
     #在第一个frame中摆放组件
     btn = tkinter.Button(frame1,text = '1').pack(side = 'left',padx = 20)  #--各种组件 
"""
公共属性:
   text 设置文字
   bg 背景色
   fg 前景色
   bd 边框
   width 宽度
   height 高度
   anchor 按钮中的文字方位 e s w n nw ne sw se 默认center
   font 类型[,大小,粗细,斜体] 例: font= ('黑体',20,'bold','italic')
   command 点击按钮后触发的动作(函数)  
   变量.set(参数) 设置值
   变量.get() 获取值
"""#--基本按钮 button
 """
   button属性:
   state 设置状态 disabled 不能用 normal 正常 
 """#--选择按钮 Checkbutton
 """
   Checkbutton 属性:
   variable 指定变量
   onvalue 选中值
   offvalue 没选中值 
   0值在哪代表默认状态是什么(选中 没选中)
   tkinter.IntVar() tkinter.StringVar() 创建变量方式整型或字符串
 """#--单选按钮 Radiobutton
 """
   #justify 设置内置多行文字的对其方式 left center right
 """#--普通文本框 Entry
 """
   #密码框 show 设置密码数框的覆盖符号
   #设置变量textvariable:字符串 StringVar 整形IntVar 浮点型DoubleVar 布尔值BooleanVar 先设置变量在文本框
   #selectbackground 设置选中内容的背景色 selectforeground 选中内容的前景色
   #state 设置状态 disabled 不能用 normal 正常 readonly 只读
 """#--多行文本 Text
 """
   多行文本 除了show与普通文本框属性一致
 """#--标签组件Label
 """
   标签组件Label 除了show和选中设置 与普通文本框属性一致
 """


#--菜单组件
   allmenu = tkinter.Menu()
 #添加分割线
   edit.add_separator()
 #向子菜单中添加选项卡
   edit = tkinter.Menu(tearoff = 0)
   edit.add_command(label = '退出',command = demo)
 #将子菜单加入总菜单
   allmenu.add_cascade(menu = edit,label = '编辑')
 #摆放总菜单
   root.config(menu = allmenu) 
#--消息框 messagebox 
"""
   属性:message title
"""
messagebox:
   showinfo 显示信息对话框
   showwarning 提示警告对话框
   showerror 显示错误对话
   askquestion 问题对话框
   askokcancel 确定还是取消对话框
   askyesno 是不是对话框
   askretrycancel 重试或者取消对话框#--简易对话框simpledialog
"""
   属性:title ,prompt,initialvalue 
"""
simpledialog:
   askstring 字符串对话框
   askinteger 整形对话框
   askfloat 浮点数对话框#--文件对话框filedialog
filedialog:
   #askopenfilename 请求文件名称对话框
   #askdirectory 请求文件夹对话框
   #asksaveasfilename 保存文件对话框
"""
   title = '请选择文件保存路径',
   initialdir = '/',
   initialfile = '默认文件名称',
   filetypes =(('文本文件','*.txt'),('word文件','*.doc'),('任意文件','*.*'))
""" 
#--顶级窗口 toplevel 
   #withdraw 关闭窗口
   #iconify 隐藏窗口
   #deiconify 显示窗口