• Python笔记_第四篇_高阶编程_GUI编程之Tkinter_2.控件类


    1. Label控件

      说明:标签控件,可显示文本

      图示1:

      

      实例1:

    import tkinter
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    
    # 设置标题
    win.title("Thomas的窗口")
    
    # 设置大小和位置
    win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    # Label:标签控件,可以显示文本
    # win:父窗体
    # text:显示的文本内容
    #  高度
    # height:宽度
    # bg:背景色
    # fb:字体颜色,前景色
    # font:字体和字体的大小
    # wraplength:指定text文本中多宽进行换行
    # justify:设置换行后的对齐方方法
    # anchor:位置 e s w n(东南西北),center中心,es,ws,en,wn(东南,西南,东北,西北)
    label = tkinter.Label(win,
                          text="Thomas is a good man",
                          bg = "black",
                          fg = "white",
                          font = ("黑体",14),
                          width = 10,
                          height = 4,
                          wraplength = 100,
                          justify = "left",
                          anchor = "e")
    # 显示出来
    label.pack()
    
    
    
    
    
    
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:让标签显示出现要进行pack放置的命令。

    2.  Button控件

      说明:

      Button控件表示按钮

      图示1:

      实例1:

    import tkinter
    
    def func():
        print("Thomas is a good man")
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    
    # 设置标题
    win.title("Thomas的窗口")
    
    # 设置大小和位置
    win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    # Button:创建按钮
    # win:父窗体
    # text:显示的文本内容
    button1 = tkinter.Button(win, text="按钮", command=func, width=10, height=10)
    # func:写函数的方式
    button1.pack()
    
    button2 = tkinter.Button(win, text="按钮", command=lambda:print("Thomas is handsome man"),
                             width=10, height=10)
    # lambda表达式
    button2.pack()
    
    button3 = tkinter.Button(win, text="按钮", command=win.quit, width=10, height=10)
    # win.quit/win.destroy 退出
    button3.pack()
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:comand用于放置事件,事件一般可以导入函数形式、lambda表达式方式、或者win.quit的内置函数

     3.Entry控件

      说明1:

       Entry表示为输入控件,用于显示简单的文本。

      图示1:

     

      实例1:

    import tkinter
    
    def func():
        print("Thomas is a good man")
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    
    # 设置标题
    win.title("Thomas的窗口")
    
    # 设置大小和位置
    win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    # Entry:输入控件
    # 用于显示简单的文本内容
    # 绑定变量
    e = tkinter.Variable()
    # show 密文显示 ****/....等
    #
    entry = tkinter.Entry(win, show = "*",textvariable = e)
    
    
    entry.pack()
    # e就代表输入框这个对象
    # 设置值
    e.set("sunck is a good man")
    # 取值
    print(e.get())
    print(entry.get())
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:在这里用于到了绑定变量,绑定变量用textvariable来接受这个绑定变量,绑定变量分数值型、布尔型等。其中获取变量用的get方式获取。

      说明2:

       我们在用一个点击输出内容的方式。

      图示2:

     

      实例2:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    
    # 设置标题
    win.title("Thomas的窗口")
    
    # 设置大小和位置
    win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    def showInfo():
        print(entry.get())
    
    entry = tkinter.Entry(win)
    entry.pack()
    button = tkinter.Button(win,text="按钮",command=showInfo)
    button.pack()
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:用于点击输入的方式。

     4. Text控件

      说明1:

       普通的文本控制方式,用于显示多行文本,不带滚动条。

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    # Text:文本控件。用于显示多行文本。
    # heigth:表示显示的行数
    text = tkinter.Text(win,width=30,height=4)
    text.pack()
    str = '''I stand here today humbled by the task before us, grateful for the trust you have bestowed, mindful of the sacrifices borne by our ancestors. I thank President Bush for his service to our nation, as well as the generosity and cooperation he has shown throughout this transition.
    '''
    # 插入文本
    text.insert(tkinter.INSERT,str)
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:插入文本我们用了一个insert的方式。

      说明2:

       用于显示文本的滚动条。

      图示2:

     

      实例2:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    # win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    # 创建滚动条
    scroll = tkinter.Scrollbar()
    text = tkinter.Text(win,width=30,height=5)
    # side放到窗体的那一侧,fill把Y轴方向填满。
    scroll.pack(side=tkinter.RIGHT,fill=tkinter.Y)
    text.pack(side=tkinter.LEFT,fill=tkinter.Y)
    # 关联
    scroll.config(command=text.yview)
    text.config(yscrollcommand=scroll.set)
    
    str = '''
    I stand here today humbled by the task before us, grateful for the trust you have bestowed, mindful of the sacrifices borne by our ancestors. I thank President Bush for his service to our nation, as well as the generosity and cooperation he has shown throughout this transition.
    '''
    # 插入文本
    text.insert(tkinter.INSERT,str)
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:注意这里我们用到了一个config的方法去设置位置。

     5. CheckButton控件

      说明:

       这个叫多选框控件。后面有对应的单选框控件。

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    # CheckButton:多选框控件
    def update():
        message =""
        if hobby1.get() == True:
            message += "money
    "
        if hobby2.get() == True:
            message += "power
    "
        if hobby3.get() == True:
            message += "people
    "
    
        # 清除所有text所有内容
        text.delete(0.0,tkinter.END)
        text.insert(tkinter.INSERT,message)
    
    # 要绑定的变量
    hobby1 = tkinter.BooleanVar()
    # 多选框
    check1 = tkinter.Checkbutton(win,text="Money",variable=hobby1,command=update)
    check1.pack()
    
    hobby2 = tkinter.BooleanVar()
    check2 = tkinter.Checkbutton(win,text="power",variable=hobby2,command=update)
    check2.pack()
    
    hobby3 = tkinter.BooleanVar()
    check3 = tkinter.Checkbutton(win,text="people",variable=hobby3,command=update)
    check3.pack()
    
    text = tkinter.Text(win,width=50,height=5)
    text.pack()
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:我们这里还用到一个布尔型的绑定变量。

     6. RadioButton控件

      说明1:

       单选框控件。

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置
    
    # Radiobutton:单选框控件
    
    def update():
        print(r.get())
    
    # 绑定变量
    # 注意:一组单选框要绑定同一个变量
    r = tkinter.IntVar() #绑定整型
    # r = tkinter.StringVar() # 绑定字符串
    
    
    radio1 = tkinter.Radiobutton(win,text="one",value=1,variable=r,command=update)
    radio1.pack()
    
    radio2 = tkinter.Radiobutton(win,text="two",value=2,variable=r,command=update)
    radio2.pack()
    
    radio3 = tkinter.Radiobutton(win,text="three",value=3,variable=r,command=update)
    radio3.pack()
    
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

    7. Listbox控件

      说明1:

       列表框控件。可以包含一个或多个文本框。

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    # Listbox:列表框控件。可以包含一个或多个文本框。
    # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。
    
    # 1、创建一个Listbox,添加几个元素
    listbox = tkinter.Listbox(win,selectmode=tkinter.BROWSE)
    listbox.pack()
    
    for item in ["good","nice","handsome","cool","vg","vn"]:
        # 按顺序添加
        listbox.insert(tkinter.END,item)
    # 在开始添加
    # listbox.insert(tkinter.ACTIVE,"cool")
    # 将列表当做一个元素添加
    # listbox.insert(tkinter.END,["very good","very nice"])
    
    # 删除:
    # 参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只删除第一个索引处的内容
    # listbox.delete(1,3)
    # 下标为1的元素
    # listbox.delete(1)
    
    # 选中
    listbox.select_set(2,5)
    # listbox.select_set(2)
    
    # 取消
    # listbox.select_clear(2,4)
    # listbox.select_clear(3)
    
    # 获取到列表中的元素个数
    # print(listbox.size())
    
    # 获取值,返回一个元组
    # print(listbox.get(2,4))
    # print(listbox.get(2))
    
    # 返回当前的索引项,不是item元素
    print(listbox.curselection())
    
    # 判断一个选项是否被选中,返回为布尔值
    print(listbox.select_includes(1))
    print(listbox.select_includes(3))
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

      说明2:

       列表框控件。可以包含一个或多个文本框。在Listbox小窗口显示一个字符串。用于目录选择。与BROWSE相似,但不支持鼠标移动选中位置。

      图示2:

     

      实例2:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    # Listbox:列表框控件。可以包含一个或多个文本框。
    # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。
    
    # 绑定变量
    lbv = tkinter.StringVar()
    
    # 与BROWSE相似,但不支持鼠标移动选中位置。
    lb = tkinter.Listbox(win,selectmode=tkinter.SINGLE,listvariable=lbv)
    lb.pack()
    for item in ["good","nice","handsome","cool","vg","vn"]:
        # 按顺序添加
        lb.insert(tkinter.END,item)
    
    # 打印当前列表中的选项
    print(lbv.get())
    
    # 设置选项
    lbv.set(("1","2","3"))
    
    # 绑定事件
    def myPrint(event):  # event需要一个时间参数不用传参
        print(lb.get(lb.curselection()))
    lb.bind('<Double-Button-1>',myPrint) # 点两下-按钮-鼠标左键
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

      说明3:

       Listbox里诶包控件。可以包含一个或多个文本框。

      图示3:

     

      实例3:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    # win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    # Listbox:列表框控件。可以包含一个或多个文本框。
    # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。
    
    
    
    # EXTENDED:可以使Listbox支持shift和control,实现连选和多选。
    lb = tkinter.Listbox(win,selectmode=tkinter.EXTENDED)
    
    for item in ["good","nice","handsome","cool","vg","vn","good1","nice1","handsome1","cool1","vg1","vn1","good3","nice3","handsome3","cool3","vg3","vn3"]:
        # 按顺序添加
        lb.insert(tkinter.END,item)
    
    # 滚动条
    sc = tkinter.Scrollbar(win)
    sc.pack(side=tkinter.RIGHT,fill=tkinter.Y)
    lb.configure(yscrollcommand=sc.set)
    lb.pack(side=tkinter.LEFT,fill=tkinter.BOTH)
    # 额外给属性赋值
    sc['command'] = lb.yview  # command是这个数据类型中的键名,赋值给给内容
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

      说明4:

       MULTIPLE支持多选。

      图示4:

     

      实例4:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    # win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    # Listbox:列表框控件。可以包含一个或多个文本框。
    # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。
    
    
    
    # MULTIPLE:支持多选。
    lb = tkinter.Listbox(win,selectmode=tkinter.MULTIPLE)
    lb.pack()
    for item in ["good","nice","handsome","cool","vg","vn","good1","nice1","handsome1","cool1","vg1","vn1","good3","nice3","handsome3","cool3","vg3","vn3"]:
        # 按顺序添加
        lb.insert(tkinter.END,item)
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

     8. Scale控件

      说明1:

       供用户通过拖拽指示器改变变量的值。可以说也可以竖直

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    
    # 供用户通过拖拽指示器改变变量的值。可以水平,也可以竖直
    # orient=tkinter.HORIZONTAL/VERTICAL   水平/竖直拖拽,默认是竖直的
    # lenght:水平时表示宽度,顺直时表示高度
    # tickinterval 选择值将会为该值的倍数
    scale = tkinter.Scale(win,from_=0,to=100,orient=tkinter.VERTICAL,tickinterval=10,length=200)
    scale.pack()
    
    # 设置值
    scale.set(20)
    
    
    # 获取值
    def showNum():
        print(scale.get())
    tkinter.Button(win,text="按钮",command=showNum).pack()
    print(scale.get())
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

    9. Spinbox控件

      说明1:

       数值范围控件。

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    
    # Spinbox:数值范围控件
    # increment=5:步长,默认为1
    # values:最好不要from_/to一起使用。value=(0,2,4,6,8)
    # command:只要值改变就会执行对应的方法
    
    
    # 添加方法
    def update():
        print(v.get())
    
    # 绑定变量
    v = tkinter.StringVar()
    
    sp = tkinter.Spinbox(win,from_=0,to=100,increment=1,textvariable=v,command=update)
    sp.pack()
    
    
    # 设置值
    v.set(20)
    
    # 取值
    print(v.get())
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

    10. Menu控件

      说明1:

       菜单控件。

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    
    # Menu:顶层菜单
    
    # 菜单条
    menubar = tkinter.Menu(win)
    # 设置菜单
    win.config(menu=menubar)
    
    # 设置命令方法
    def func():
        print("Thomas is a good man")
    
    # 创建一个菜单选项
    menu1 = tkinter.Menu(menubar,tearoff=False)
    # 给菜单选项添加内容
    for item in ["Python","C","C++","OC","Swift","C#","shell","Java","JS","PHP","汇编","NodeJS","退出"]:
        if item == "退出":
            # 添加分割线
            menu1.add_separator()
            menu1.add_command(label=item,command=win.quit)
        else:
            menu1.add_command(label=item,command=func)
    
    # 向菜单条上添加菜单选项
    menubar.add_cascade(label="语言",menu=menu1)
    
    
    # 在创建一个
    menu2 = tkinter.Menu(menubar,tearoff=False)
    menu2.add_command(label="red")
    menu2.add_command(label="blue")
    menubar.add_cascade(label="颜色",menu=menu2)
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

      说明2:

      图示2:

     

      实例2:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    
    # Menu:顶层菜单
    
    # 菜单条
    menubar = tkinter.Menu(win)
    
    menu = tkinter.Menu(menubar,tearoff=False)
    # 给菜单选项添加内容
    for item in ["Python","C","C++","OC","Swift","C#","shell","Java","JS","PHP","汇编","NodeJS","退出"]:
            menu.add_command(label=item)
    
    menubar.add_cascade(label="语言",menu=menu)
    
    # 板顶鼠标右键
    def showMenu(event):  #
            menubar.post(event.x_root,event.y_root)
    win.bind("<Button-2>",showMenu)  # 2是滚轮,3是右键,1是左键
    
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

     11. Combobox下拉控件

      说明1:

       下拉控件。

      图示1:

     

      实例1:

    import tkinter
    from tkinter import ttk
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    # Combobox:下拉控件
    # 绑定变量
    cv = tkinter.StringVar()
    com = ttk.Combobox(win,textvariable=cv)
    com.pack()
    # 设置下拉数据
    com["value"] = ("黑龙江","吉林","辽宁")
    
    # 设置默认值
    com.current(0)
    
    # 绑定事件
    def func(event):
        print(com.get())
        # print("Thomas is a good man")
    com.bind("<<ComboboxSelected>>",func)
    
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

    12. Frame控件

      说明1:

       在屏幕上显示矩形区域,多作为容器控件。是按照纵向区域来选择的。

      图示1:

     

      实例1:

    import tkinter
    
    
    # 创建主窗口__编程头部
    win = tkinter.Tk()
    # 设置标题
    win.title("Thomas的窗口")
    # 设置大小和位置
    win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置
    
    
    # Frame:框架控件
    # 在屏幕上显示一个矩形区域,多作为容器控件。是按照纵向区域来选的。
    
    frm = tkinter.Frame(win)
    frm.pack()
    
    # left
    frm_l = tkinter.Frame(frm)
    tkinter.Label(frm_l,text="左上",bg="pink").pack(side=tkinter.TOP)
    tkinter.Label(frm_l,text="左下",bg="blue").pack(side=tkinter.TOP)
    # left放置
    frm_l.pack(side=tkinter.LEFT)
    
    # right
    frm_r = tkinter.Frame(frm)
    tkinter.Label(frm_r,text="右上",bg="red").pack(side=tkinter.TOP)
    tkinter.Label(frm_r,text="右下",bg="yellow").pack(side=tkinter.TOP)
    # right放置
    frm_r.pack(side=tkinter.RIGHT)
    
    # 保持循环不让窗口关闭__编程尾部
    win.mainloop()

      备注:

  • 相关阅读:
    Running ASP.NET Applications in Debian and Ubuntu using XSP and Mono
    .net extjs 封装
    ext direct spring
    install ubuntu tweak on ubuntu lts 10.04,this software is created by zhouding
    redis cookbook
    aptana eclipse plugin install on sts
    ubuntu open folderpath on terminal
    ubuntu install pae for the 32bit system 4g limited issue
    EXT Designer 正式版延长使用脚本
    用 Vagrant 快速建立開發環境
  • 原文地址:https://www.cnblogs.com/noah0532/p/10886967.html
Copyright © 2020-2023  润新知