zoukankan      html  css  js  c++  java
  • 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()

      备注:

  • 相关阅读:
    lintcode42- Maximum Subarray II- medium
    leetcode53- Maximum Subarray- easy
    leetcode50- Pow(x, n)- medium
    leetcode23- Merge k Sorted Lists- hard
    leetcode21- Merge Two Sorted Lists- easy
    lintcode121- Word Ladder II- hard
    lintcode107- Word Break- medium
    lintcode10- Permutation Index II- medium
    AM335x关于LCD屏幕的时钟PLL配置 分类: TI-AM335X 2015-06-16 18:32 341人阅读 评论(0) 收藏
    用DriverStudio开发USB驱动程序 分类: USB OTG驱动 2015-06-12 10:34 376人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/noah0532/p/10886967.html
Copyright © 2011-2022 走看看