您的位置:首页 > 产品设计 > UI/UE

Tkinter-1-GUI介绍、常用组件、标准属性、几何布局

2019-08-03 13:48 651 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/mk1843109092/article/details/98321293

GUI介绍

  • GraphicalUserInterface,图形用户界面
  • GUI for Python: Tkinter
  • wxPython
  • PyQt
  • Tkinter
      绑定的是TK GUI工具集,用途Python包装的Tcl代码
  • PyGTK
      Tkinter的替代品
  • wxPython
      跨平台的Python GUI
  • PyQt
      跨平台的
    • 商业授权可能有问题
    import tkinter
    tkinter._test()

    Tkinter常用组件

    • 按钮

      Button		按钮组件
      RadioButton		单选框按钮
      CheckButton		选择按钮组件
      Listbox		列表框组件
    • 文本输入框

      Entry		单行文本框组件
      Spinbox	输入控件,可以指定输入范围值
      Text		多行文本框组件
      Message	用来显示多行文本
    • 标签组件

      Label			菜单组件
      MenuButton		菜单按钮组件,可以使用Menu代替
      Menu			菜单控件,用于显示菜单栏,下拉菜单,弹出菜单
    • 滚动条

      Scale			滑块组件
      Scrollbar		滚动条组件
    • 其他组件

      Canvas		画布组件
      Frame			框架组件,将多个组件编组
      Toplevel		创建子窗口容器组件
      PanedWindow		窗口布局管理的插件,可以包含一个或者多个子控件
      LabelFrame		简单的容器控件
      tkMessageBox		显示应用程序的消息框

    标准属性

    • 标准属性也就是所有控件的共同属性
    属性 描述
    Dimension 控件大小
    Color 控件颜色
    Font 控件字体
    Anchor 锚点
    Relief 控件样式
    Bitmap 位图
    Cursor 光标

    几何布局

    • 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:
  • place()

      明确方位的摆放
    • 相对位置布局,随意改变窗口大小会导致混乱
    • 使用place函数,分为绝对布局和相对布局,绝对布局使用x,y参数
    • 相对布局使用relx,rely, relheight, relwidth
  • grid()

      通用使用方式:组件对象.grid(设置,)
    • 利用row,column编号,都是从0开始
    • sticky: N,E,S,W表示上下左右,用来决定组件从哪个方向开始
    • 支持ipadx,padx等参数,跟pack函数含义一样
    • 支持rowspan,columnspan,表示跨行,跨列数
    # pack布局案例
    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<
    3ff7
    span class="token punctuation">, 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()
    • 鼠标拖动,按比例进行缩放
    # grid布局案例
    import tkinter
    baseFrame = tkinter.Tk()
    
    #下面被注释掉的一行代码跟下面两行代码等效
    #lb1 = tkinter.Label(baseFrame, text="账号: ").grid(row=0, sticky= tkinter.W)
    lb1 = tkinter.Label(baseFrame, text="账号: ")
    lb1.grid(row=0, sticky= tkinter.W)
    en = tkinter.Entry(baseFrame)
    en.grid(row=0, column=1, sticky=tkinter.E)
    
    lb2 = tkinter.Label(baseFrame, text="密码: ").grid(row=1, sticky= tkinter.W)
    tkinter.Entry(baseFrame).grid(row=1, column=1, sticky=tkinter.E)
    
    btn = tkinter.Button(baseFrame, text="登录").grid(row=2, column=1, sticky=tkinter.W)
    baseFrame.mainloop()
    • 鼠标拖动,内容固定在左上角,不动

    组件的大致使用步骤

    1. 创建面板
    2. 创建面板上的各种组件 指定组件的父组件,即依附关系
    3. 利用相应的属性对组件进行设置
    4. 给组件安排布局
  • 创建多个组件
  • 最后,启动总面板的消息循环
  • # label例子
    import tkinter
    base = tkinter.Tk()
    # 负责标题
    base.wm_title("label Test")
    
    lb1 = tkinter.Label(base, text="Python Label")
    # 布局
    lb1.pack()
    
    lb2 = tkinter.Label(base, text="绿色背景", background="green")
    lb2.pack()
    
    lb3 = tkinter.Label(base, text="蓝色背景", background="blue")
    lb3.pack()
    # 消息循环
    base.mainloop()
    # Button例子
    import tkinter
    def showLabel():
    global baseFrame
    # 在函数中定义一个Label
    # label的父组件是baseFrame
    lb = tkinter.Label(baseFrame, text="显示Label")
    lb.pack()
    baseFrame = tkinter.Tk()
    btn = tkinter.Button(baseFrame, text="Show Label", command=showLabel)
    btn.pack()
    baseFrame.mainloop()
    Button的属性:
    anchor     设置按钮中文字的对其方式,相对于按钮的中心位置
    background(bg)   设置按钮的背景颜色
    foreground(fg)  设置按钮的前景色(文字的颜色)
    borderwidth(bd)  设置按钮边框宽度
    cursor    设置鼠标在按钮上的样式
    command    设定按钮点击时触发的函数
    bitmap    设置按钮上显示的位图
    font    设置按钮上文本的字体
    width    设置按钮的宽度  (字符个数)
    height    设置按钮的高度  (字符个数)
    state    设置按钮的状态
    text    设置按钮上的文字
    image    设置按钮上的图片
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: