###很喜欢PyQt的,但是Tkinter作为Python自带的GUI库,还是不得不了解一下,挺简介方便的,一共包含了15个组件:

  1. Button 按钮。类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作/事件

  2. Canvas 画布。提供绘图功能(直线、椭圆、多边形、矩形) ;可以包含图形或位图

  3. Checkbutton 选择按钮。一组方框,可以选择其中的任意个(类似 HTML 中的 checkbox)

  4. Entry 文本框。单行文字域,用来收集键盘输入(类似 HTML 中的 text)

  5. Frame 框架。包含其他组件的纯容器

  6. Label 标签。用来显示文字或图片

  7. Listbox 列表框。一个选项列表,用户可以从中选择

  8. Menu 菜单。点下菜单按钮后弹出的一个选项列表,用户可以从中选择

  9. Menubutton 菜单按钮。用来包含菜单的组件(有下拉式、层叠式等等)

  10. Message 消息框。类似于标签,但可以显示多行文本

  11. Radiobutton 单选按钮。一组按钮,其中只有一个可被“按下” (类似 HTML 中的 radio)

  12. Scale 进度条。线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值

  13. Scrollbar 滚动条。对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能

  14. Text 文本域。 多行文字区域,可用来收集(或显示)用户输入的文字(类似 HTML 中的 textarea)

  15. Toplevel 顶级。类似框架,但提供一个独立的窗口容器。


写了一点例子,留着查看:

##直接上个图吧,在注释里解释.第一个图:

   
    #coding:utf-8
    from Tkinter import *
    import sys
    # 创建主窗口
    root = Tk()
    # 设置主窗口的大小,出现的位置
    root.geometry("250x500+400+400")
    # 添加Button, command 绑定行为
    button1 = Button(root, text = 'button1', fg = 'black')
    button2 = Button(root, text = 'quit', fg = 'gray', command = sys.exit)
    button1.pack()
    button2.pack()
    # 添加Label
    label = []
    for i in range(5):
        label.append(Label(root, text = '-' * 80))
    label[0].pack()
    # 添加Canvas,画个图
    canvas = Canvas(bg = 'blue')
    coord = 10, 50, 220, 230
    canvas.create_arc(coord, start = 0, extent = 333, fill = 'yellow')
    canvas.pack()
    label[1].pack()
    # 添加Checkbutton, 就是勾选框
    checkbutton1 = Checkbutton(root, text = 'Python')
    checkbutton2 = Checkbutton(root, text = 'Ruby  ')
    checkbutton3 = Checkbutton(root, text = 'Lisp  ')
    checkbutton1.pack()
    checkbutton2.pack()
    checkbutton3.pack()
    label[2].pack()
    # 添加Entry, 可以输入一行文本
    entry = Entry(root)
    entry.pack()
    label[3].pack()
    # 添加Spinbox
    spinbox = Spinbox(root, from_ = 0, to = 100)
    spinbox.pack()
    label[4].pack()
    # 添加Listbox, 一个列表箱
    listbox = Listbox(root)
    listbox.insert(1, 'C++')
    listbox.insert(2, 'Java')
    listbox.insert(3, 'php')
    listbox.pack()
    mainloop()

##第二个图:

   
    #coding: utf-8
    from Tkinter import *
    import tkMessageBox
    import sys
    root = Tk()
    root.geometry("200x200+300+300")
    # add tkMessagebox, just a info window
    def action():
        tkMessageBox.showinfo('hello, I am title!', 'hello, Tkinter!!!!')
    # 这个button绑定的是弹出信息窗
    button = Button(root, text = 'responce button', command = action, fg = 'blue')
    # 这个button绑定的行为是推出该GUI
    quitbutton = Button(root, text = 'quitbutton', command = sys.exit)
    quitbutton.pack()
    button.pack()
    mainloop()

##图三:

   
    #coding: utf-8
    from Tkinter import *
    import tkMessageBox
    import sys
    root = Tk()
    root.geometry("200x200+300+300")
    # 添加Frame
    # Frame框架像是一个容器,负责安放这一堆部件的位置
    # Frame采用矩形区域布局,并提供这些部件的填充
    # 一个框架也可以作为一个基础类,以实现复杂的构件
    frame = Frame(root)
    frame.pack()
    bottomframe = Frame(root)
    bottomframe.pack(side = BOTTOM)
    # 添加text,一个文本组件
    text = Text(bottomframe)
    text.insert(END,'iFrame框架像是一个容器')
    #text.pack()
       
    # 布置几个button
    redbutton = Button(frame, text = 'red', fg = 'red')
    bluebutton = Button(frame, text = 'blue', fg = 'blue')
    yellobutton = Button(frame, text = 'yellow', fg = 'yellow')
    redbutton.pack(side = LEFT)
    bluebutton.pack(side = LEFT)
    yellobutton.pack(side = LEFT)
       
    bottombutton = Button(bottomframe, text = 'buttonButton', fg = 'black', command = sys.exit)
    bottombutton.pack(side = BOTTOM)
    # 分割线
    label2 = Label(bottomframe, text = '-' * 90)
    label2.pack()
       
    # 添加Menubutton
    # menubutton 是个下拉菜单,用户点一下,展开,能选择
    mb = Menubutton(bottomframe, text = '下拉才菜单')
    mb.menu = Menu(mb)
    mb['menu'] = mb.menu
    mb.menu.add_checkbutton(label = 'no1 choice')
    mb.menu.add_checkbutton(label = 'no2 choice')
    mb.pack()
           
    text.pack()
    mainloop()


blog comments powered by Disqus

Published

08 February 2014

Tags