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")) 四级 ... ...
python:tkinter基础操作
最新推荐文章于 2024-06-02 20:29:08 发布