python:tkinter基础操作

Tkinter库:
使用Tkinte库,导入----- import tkinter
                from tkinter import *()少用
        1.窗口底层创建,只创建一个
            root = tkinter.Tk()
(非必须)2.设置窗口的属性:
                    title
                    geometry --- 大小
                        参数设置方式geometry("600x600+100+100")
                        600x600  :表示窗口大小  +100+100 表示其位置
        3.设置窗口,运行起来生效
                root.mainloop()
                要实现的功能代码写在这之前
A.tkinter中的组件:
        Button   按钮组件
        Checkbutton  按钮选择组件----点击按钮可进行切换值

        Label   -----文本(更多使用)、图像
        Listbox  ----列表框,选择框
        Menu  菜单面板:用于实现下拉菜单
        Scale  拖拽组件,可实现变量值设置
        Scrollbar  滚动条
        Text  格式化文本进行显示
        Spinbox   数值范围控制,从范围中或者集合中选择值
        Frame  创建一个容器,通常将其他组件置放在容器中进行布局设置
B.组件使用:
        创建组件:
                eg:label_01 = tkinter.Label(root,text="xxxx")
                root是第一个参数,声明此组件是创建在root窗口中,text是其内容
        使用pack()函数:label_01.pack() 对组件进行布局操作(另有place和grid布局方式)

C.Menu菜单:(此菜单类似于打开的记事本顶层的导航栏中的各项实现)
        创建总菜单栏
            menuBar =tkinter.Menu(root)
        写下拉菜单的列表(添加项):
            在menuBar中创建menu_01
            menu_01 = tkinter.Menu(menuBar,tearoff=0)
            给当前菜单列表添加普通项,名给New,点击是触发函数func
            menu_01.add_command(label="New",command=func)
            给当前总菜单创建子项,名为File,menu_01为添加对象
            menuBar.add_cascade(label="File",menu=menu_01)
        菜单项添加分割线:
            menu_01.add_separator()

        鼠标(左)右键菜单:(鼠标在界面任意处点击右键都触发)
                绑定鼠标事件:root.bind("<Button-3>",showMenu)   -->绑定在顶层窗口(整个界面)
                def showMenu(event):
                        menuBar.post(event.x_root,event.y_root)
                post()函数引导menuBar出现至当前单击处的坐标位置
D.Frame控件:
        框架 --> 作为容器控件
        创建:frame_01 = tkinter.Frame(root)
        # 往控件中添加label组件
        frm_01 = tkinter.Frame(frame_01)
        tkinter.Label(frm_01,text="左上",bg="pink").pack(side=tkinter.TOP)
        tkinter.Label(frm_l, text="我在左下", bg="red").pack(side=tkinter.TOP)
        frm_l.pack(side=tkinter.LEFT)
E.选项框:
        单选框:
            每一组 Radiobutton组件应该只与一个变量相关联,然后每一个按钮表示该变量的单一值
            设置按钮的状态  ---> radioCheck = tkinter.IntVar() ,此处使用了IntVar,使用哪一
            类则是根据value的值的类型
            但需要获取选择的选项信息时,直接通过radiocheck进行获取
            radio_01 = tkinter.Radiobutton(root,text="xxx",value= ,variable=radioCheck,command=func)
            radio_01.pack()
        复选框:
            使用Checkbutton,必须创建一个Tkinter变量用于存放按钮的状态
            item_01 = tkinter.BooleanVar()
            check_01 = tkinter.Checkbutton(root,text="xxx",variable=item_01,command=func)
            check_01.pack()
            同单选框相同的是:获取已选选项的信息是通过存放按钮的tkinter变量来获取,此处是item_01
            不同的是:复选框的每个选项都需要一个存放按钮的状态,此处使用的是Boolean

F.listBox控件:(列表框,显示列表)
        创建ListBox:
        listb = tkinter.Listbox(root,selectmode=tkinter.BROWSE)
        listb.pack()
        selectmode参数:
                BROWSE;通常,只能从列表框中选择一行。如果单击
                一个项目,然后拖动到不同的行,选择将会跟随鼠标,是默认的。
                EXTENDED:一次选择任何相邻的选项,单击第一行并拖到最后一行。能拖动
                SINGLE:只可以选择一行,不可以拖动
                MULTIPLE:可以同时选择任意数量的行。点击在任意直线上,无论它是否被选中。不能拖动。
G.Scale、SpinBox控件:
        Scale创建:
            scale_01 = tkinter.Scale(root,from_= ,to= ,orient=tkinter.VERTICAL)
            from_:起始值; to:最大值
            orient:拖拽组件的方向放置 --> VERTICAL,HORIZONTAL
            其他属性:
                tickinterval:取值单位大小;  length:拖拽组件的长度
            设置拖拽初始的值:scale_01.set(33)
        spinBox创建:
            数值范围控制(选择):
                [increment]---步长
                [values]----选择性数值
                from_= ,to= ,数值区域限制
                textvariable ----设置初值数据
            v=tkinter.StringVar()
            spin_01 = tkinter.Spinbox(root,from_= ,to= ,increment= ,textvariable=v,command=func)
            spin_01.pack()

H.Combobox(下拉控件):
        创建下拉菜单
        cmb_01 = ttk.Combobox(root)
        cmb_01.pack()
        设置下拉菜单中数据的值
        cmb_01['value'] = ('xxx','xxx','xxx')
        设置下拉框的初始默认值,默认是从0开始
        cmd_01.current(2)
        事件绑定
        cmb_01.bind("<<ComboboxSelected>>",func)


I.布局:
        a.相对布局:
                使用pack()函数
                label_01 = tkinter.Label(root,text="hhjj",bg="blue")
                label_01.pack(fill=tkinter.X,side=tkinter.LEFT)
                此布局是相对此组件所创建时的父组件进行定位
        b.绝对布局:
                使用place()函数
                label_01.place(x=200,y=222)
                第一个参数x为x轴,y为y轴;此布局是相对整个界面进行布局

        c.表格布局:
                grid()函数
                label_01.grid(row=1,column=0)
                按照行列布局
J.特殊按键事件的响应:
        设置焦点:(在哪个组件内可使用)
            label_01.focus_set()
            label_01.pack()
        绑定事件:
        def func(event):
            print("event.char=", event.char)
            print("***************")
            print("event.keycode = ", event.keycode)
            label_01.bind("<Contrl-a>",func)
        '''
            Key  -> 响应键盘按下事件
            Shift_L  ->响应左Shift
            Shift_R  ->响应右Shift
            F5
            Return  ->回车
            BackSpace  ->退格
        '''


K.鼠标事件:
        通过bind()函数进行绑定组件:
            1.鼠标左键:
                    <Button-1>
                    <Double-Button-1>
            2.鼠标右键:
                    <Button-3>
                    <Double-Button-3>
            3.鼠标中键:
                    <Button-2>
                    ----
            4.鼠标三击:
                    <Triple-Button>

            5.鼠标移动事件:
                a.按住左键移动鼠标焦点:
                        <B1-Motion>
                        <B2-Motion>
                        <B3-Motion>
                b.鼠标释放:
                    当鼠标点击之后松开触发
                        <ButtonRelease-1>
                        <ButtonRelease-2>
                        <ButtonRelease-3>
                c.鼠标进入与离开:
                        <Enter>
                        <Leave>


        使用鼠标事件:
                通过绑定组件进行操作:
                def func(event):
                        print("你点击了鼠标左键")
                eg:label_01.bind("<Button-1>",func)

L.数据展示:
        表格数据;
            创建:
                tree = ttk.Treeview(root)
                tree.pack()
            添加列:
                tree["columns"]=('name','age','weight',....)
            列属性设置,列不显示:
                tree.column("name",width=50)
                ...
                ...
            表头设置:
                tree.heading("name",text="姓名(name)")
                ...
                ...
            数据添加:
                0为列的下标,第0行
                ""  ---->表示根结点
                tree.insert("",0,text="line1",values=("李磊","15","160","80"))
        树状数据:
            一级树枝:
                "":表示根结点  0:插入在第一行  "CHINA":表示id  values表示为隐藏的值
                treeF1 = tree.insert("", 0, "CHINA", text="中国", values=("F1"))

            二级树枝:
                F1_1 = tree.insert(treeF1, 0, "江西", text="中国江西", values=("F1_1"))

            三级树枝:
                F1_1_1 = tree.insert(F1_1, 0, "赣州", text="江西赣州", values=("F1_1_1"))
            四级
            ...
            ...
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值