• python之Tkinker学习


    Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口,位Python的内置模块,直接import tkinter即可使用。

    作为实践, 用Tkinter做了个ascii码转化查询表

    1. 产品介绍

    界面

      

    功能

    • 通过输入字符或数字查询对应的信息
    • 通过选择列表中的信息查询对应的信息

    2. 设计规划

    规划图

    3. 相关知识

    首先看怎么产生第一个窗口

    from Tkinter import *   #引用Tk模块
    root = Tk()             #初始化Tk()
    root.mainloop()         #进入消息循环

    几个常用属性

    • title: 设置窗口标题
    • geometry: 设置窗口大小
    • resizable():设置窗口是否可以变化长 宽
    复制代码
    # -*- coding: cp936 -*-
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry('200x100')                 #是x 不是*
    root.resizable(width=False, height=True) #宽不可变, 高可变,默认为True
    root.mainloop()
    复制代码

    介绍以下几个控件的用法

    • Label
    • Frame
    • Entry
    • Text
    • Button
    • Listbox
    • Scrollbar

    说明每个控件最后要加上pack().否则控件是无法显示的.

    3.1 Label

    说明

      标签

    用法

      Label(根对象, [属性列表])

    属性

    • text    要现实的文本
    • bg    背景颜色
    • font    字体(颜色, 大小)
    • width  控件宽度
    • height 控件高度

      以下介绍的控件差不多都有这几个属性, 更详细的属性查看参考网页

    举例

    复制代码
    # -*- coding: cp936 -*-
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry('300x200')
    l = Label(root, text="show", bg="green", font=("Arial", 12), width=5, height=2)
    l.pack(side=LEFT)  #这里的side可以赋值为LEFT  RTGHT TOP  BOTTOM
    root.mainloop()
    复制代码

    效果

      

    3.2 Frame

    说明

      在屏幕上创建一块矩形区域,多作为容器来布局窗体

    用法

      Frame(根对象, [属性列表])

    举例

         要在控件中出现这样的四个词语

                     校训

              厚德        敬业

              博学        乐群     

      可以规划为         

        

    复制代码
    # -*- coding: cp936 -*-
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry('300x200')
    
    Label(root, text='校训'.decode('gbk').encode('utf8'), font=('Arial', 20)).pack()
    
    frm = Frame(root)
    #left
    frm_L = Frame(frm)
    Label(frm_L, text='厚德'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
    Label(frm_L, text='博学'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
    frm_L.pack(side=LEFT)
    
    #right
    frm_R = Frame(frm)
    Label(frm_R, text='敬业'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
    Label(frm_R, text='乐群'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
    frm_R.pack(side=RIGHT)
    
    frm.pack()
    
    root.mainloop()
    复制代码

    效果

      

    3.3 Entry

    说明

      创建单行文本框

    用法

    •   创建:lb =Entry(根对象, [属性列表])
    •   绑定变量 var=StringVar()    lb=Entry(根对象, textvariable = var)
    •   获取文本框中的值   var.get()
    •   设置文本框中的值   var.set(item1)

    举例

    复制代码
    # -*- coding: cp936 -*-
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry()
    var = StringVar()
    e = Entry(root, textvariable = var)
    var.set("hello")
    e.pack()
        
    root.mainloop()
    复制代码

    效果

      

    3.4 Text

    说明

      向该空间内输入文本

    用法

      t = Text(根对象)

      插入:t.insert(mark, 内容)

      删除:t.delete(mark1, mark2)

      其中,mark可以是行号,或者特殊标识,例如

    • INSERT:光标的插入点CURRENT:鼠标的当前位置所对应的字符位置
    • END:这个Textbuffer的最后一个字符
    • SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常
    • SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发 异常

    举例

    复制代码
    # -*- coding: cp936 -*-
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry('300x200')
    
    t = Text(root)
    t.insert(1.0, 'hello
    ')
    t.insert(END, 'hello000000
    ')
    t.insert(END, 'nono')
    t.pack()
    
    root.mainloop()
    复制代码

    效果

      

    3.5 Button

    说明

      创建按钮

    用法

      Button(根对象, [属性列表])

    举例

    复制代码
    # -*- coding: cp936 -*-
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry()
    
    def printhello():
        t.insert('1.0', "hello
    ")
        
    t = Text()
    t.pack()
    Button(root, text="press", command = printhello).pack()
    root.mainloop()
    复制代码

    效果

      

    3.6 Listbox

    说明

      列表控件,可以含有一个或多个文本想,可单选也可多选

    用法

    •   创建:lb = ListBox(根对象, [属性列表])
    •   绑定变量 var=StringVar()    lb=ListBox(根对象, listvariable = var)
    •   得到列表中的所有值   var.get()
    •   设置列表中的所有值   var.set((item1, item2, .....))
    •   添加:lb.insert(item)
    •   删除:lb.delete(item,...)
    •   绑定事件 lb.bind('<ButtonRelease-1>', 函数)
    •   获得所选中的选项 lbl.get(lb.curselection())

    属性

      selectmode可以为BROWSE MULTIPL SINGLE

    举例

    复制代码
    # -*- coding: cp936 -*-
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry()
    
    def print_item(event):
        print lb.get(lb.curselection())
        
    var = StringVar()
    lb = Listbox(root,  listvariable = var)
    list_item = [1, 2, 3, 4]         #控件的内容为1 2 3 4
    for item in list_item:
        lb.insert(END, item)
    lb.delete(2, 4)                  #此时控件的内容为1 3
    var.set(('a', 'ab', 'c', 'd')) #重新设置了,这时控件的内容就编程var的内容了 print var.get() lb.bind('<ButtonRelease-1>', print_item) lb.pack() root.mainloop()
    复制代码

    效果

      

    3.7 Scrollbar

    说明

      在屏幕上创建一块矩形区域,多作为容器来布局窗体

    用法

      Frame(根对象, [属性列表]), 最长用的用法是和别的控件一起使用.

    举例

    复制代码
    from Tkinter import *
    root = Tk()
    root.title("hello world")
    root.geometry()
    
    def print_item(event):
        print lb.get(lb.curselection())
        
    var = StringVar()
    lb = Listbox(root, height=5, selectmode=BROWSE, listvariable = var)
    lb.bind('<ButtonRelease-1>', print_item)
    list_item = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    for item in list_item:
        lb.insert(END, item)
        
    scrl = Scrollbar(root)
    scrl.pack(side=RIGHT, fill=Y)
    lb.configure(yscrollcommand = scrl.set)
    lb.pack(side=LEFT, fill=BOTH)
    scrl['command'] = lb.yview
    
    root.mainloop()
    复制代码

    效果

      

    4. 源码附件

    代码

     View Code

    文本

     View Code


    参考资料

    通用控件属性:http://my.oschina.net/TyLucifer/blog/112961

    文件路径:http://blog.sina.com.cn/s/blog_76129c6f0101892q.html

  • 相关阅读:
    关于树论【动态树问题(LCT)】
    caioj1462: 【EXKMP】回文串
    Node.js 文件上传 cli tools
    VuePress & Markdown Slot
    npm config set registry
    Front End Frameworks Trending 2021
    如何使用 VuePress 搭建一个 element-ui 风格的文档网站
    Semantic Pull Requests All In One
    [POJ2559]Largest Rectangle in a Histogram
    [POJ3253]Fence Repair
  • 原文地址:https://www.cnblogs.com/QQ_86053634/p/8286901.html
Copyright © 2020-2023  润新知