Python自学笔记-03Python GUI包Tkinter

Tkinter 常用组件

按钮

  • Button 按钮组件
  • RadioButton 单选框组件
  • CheckButton 选择按钮组件
  • Listbox 列表框组件

文本输入组件

  • Entry 单行文本框组件
  • Text 多行文本框组件

标签组件

  • Label 标签组件,可以显示图片和文字
  • Message 标签组件,可以根据内容将文字换行

菜单

  • Menu 菜单组件
  • MenuButton 菜单按钮组件,可以使用Menu代替

滚动条

  • scale 滑块组件
  • Scrollbar 滚动条组件

其他组件

  • Canvas 画布组件
  • Frame 框架组件,将多个组件编组
  • Toplevel 创建子窗口容器组件

组件的大致使用步骤

  1. 创建总面板

  2. 创建面板上的各种组件

    • 指定组件的父组件,即依附关系
    • 利用相应的属性对组件进行设置
    • 给组件安排布局
  3. 同步骤2相似,创建好多个组件

  4. 最后,启动总面板的消息循环

     import Tkinter
     #创建总面板
     base=Tkinter.Tk()
     #设置面板标题
     base.wm_title("test")
     #创建面板上的各种组件,指定组件的父组件,设置组件属性
     lb=Tkinter.Label(base,text="测试测试")
     #给组件安排布局
     lb.pack()
     #启动总面板的消息循环
     base.mainloop()
    

组件布局

控制组件的摆放方式

三种布局:

  • pack: 按照方位布局
  • place: 按照坐标布局
  • grid: 网格布局

pack布局

  • 最简单,代码量最少,挨个摆放,默认从上倒下,系统自动设置
  • 通用使用方式为: 组件对象.pack(设置,,,,,,,)
  • side: 停靠方位, 可选值为LEFT,TOP,RIGHT,BOTTON
  • fill: 填充方式,X,Y,BOTH,NONE
  • expande: YES/NO
  • anchor: N,E,S,W,CENTER
  • ipadx: x方向的内边距
  • ipady: y
  • padx: x方向外边界
  • pady: y…

grid布局

  • 通用使用方式:组件对象.grid(设置,)
  • 利用row,column编号,都是从0开始
  • sticky: N,E,S,W表示上下左右,用来决定组件从哪个方向开始
  • 支持ipadx,padx等参数,跟pack函数含义一样
  • 支持rowspan,columnspan,表示跨行,跨列数量

place布局

  • 明确方位的摆放

  • 相对位置布局,随意改变窗口大小会导致混乱

  • 使用place函数,分为绝对布局和相对布局,绝对布局使用x,y参数

  • 相对布局使用relx,rely, relheight, relwidth

      import tkinter
    
      baseFrame = tkinter.Tk()
      # 以下所有代码都是创建一个组件,然后布局
    
      btn1 = tkinter.Button(baseFrame, text='A')
      btn1.pack(side=tkinter.LEFT, expand=tkinter.YES, fill=tkinter.Y)
    
      btn2 = tkinter.Button(baseFrame, text='B')
      btn2.pack(side=tkinter.TOP, expand=tkinter.YES, fill=tkinter.BOTH)
    
      btn2 = tkinter.Button(baseFrame, text='C')
      btn2.pack(side=tkinter.RIGHT, expand=tkinter.YES, fill=tkinter.NONE, anchor=tkinter.NE)
    
      btn2 = tkinter.Button(baseFrame, text='D')
      btn2.pack(side=tkinter.LEFT, expand=tkinter.NO, fill=tkinter.Y)
    
      btn2 = tkinter.Button(baseFrame, text='E')
      btn2.pack(side=tkinter.TOP, expand=tkinter.NO, fill=tkinter.BOTH)
    
      btn2 = tkinter.Button(baseFrame, text='F')
      btn2.pack(side=tkinter.BOTTOM, expand=tkinter.YES)
    
      btn2 = tkinter.Button(baseFrame, text='G')
      btn2.pack(anchor=tkinter.SE)
    
      baseFrame.mainloop()
    

你可能感兴趣的:(Python自学笔记-03Python GUI包Tkinter)