1、问题猜数字游戏 常见的Python GUI库:l Tkinter:Python的标准GUI库l wxPython:开源软件l Jython:可以和Java无缝集成 Tkinter内置在python安装包中,只要import就可以使用。导入模块:l Import tkinter as tkl from tkinter import*Tkinter模块图形用户界面库1几何布局管理器目录创建Windows窗口2常用Tkinter组件3事件处理4 例1-1:import tkinter#导入Tkinter模块win=tkinter.Tk()#创建Windows窗口win.title(第一个用户界面)#
2、设置窗口标题win.geometry(400 x90+250+200)#设置窗口大小和显示位置win.minsize(400,90)#设置窗口最小尺寸win.maxsize(600,120)#设置窗口最大尺寸win.mainloop()#显示窗口 其中:l Tk(className=“xxx”):创建带有制定标题的窗口l geometry(size):设置窗口大小。其中size用于制定窗口大小,格式:宽度 x 高度+left+topl resizable(x,y):设置x,y可调性,0表示不可调,1表示可调创建Windows窗口使用tkinter库中的Tk()创建Windows窗口1几何布局管
3、理目录创建Windows窗口2常用Tkinter组件3事件处理4 pack():包装布局方式,采用块的方式组织组件。根据组件创建生成的顺序将子组件放在快速生成的界面中广泛应用。pack(option=value,)几何布局管理Tkinter控件有特定的几何布局管理方法,管理整个控件区域组织Option选项选项描述描述取值范围取值范围side停靠在父组建的哪一边上top(默认值),bottom,left,rightanchor停靠位置,对应于东南西北以及四个角n,a,e,w,nw,sw,se,ne,center(默认值)fill填充空间x,y,both,noneexpand扩充空间0或1ipad
4、x,ipady组件内部在x/y方向上填充的空间大小单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点)padx,pady组件外部在x/y方向上填充的空间大小单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点)例1-2import tkinterroot=tkinter.Tk()root.geometry(500 x300)label=tkinter.Label(root,text=“Hello Python”)#标签组件label.pack()#放置在默认side=top,anchor=center的块位置button1=tkinter.Button(root,text=“BUTT
5、ON1”)#按钮组件button1.pack(side=tkinter.LEFT)#放置在默认side=left,anchor=center的块位置button2=tkinter.Button(root,text=BUTTON2)button2.pack(side=tkinter.RIGHT,anchor=tkinter.NE)#放置在默认side=right,anchor=ne的块位置root.mainloop()#消息窗口循环几何布局管理Pack()nw n new center esw s se grid():网格布局方式,采用表格结构组织组件。子组件位置由行/列确定的单元格决定,子组件
6、可以跨越多行/多列。每一行中,列宽由这一列中最宽的单元格确定。采用grid布局,适合于表格形式的布局,可以实现复杂的界面,应用广泛。l grid(option=value,.)网格布局管理Option选项选项描述描述取值范围取值范围sticky组件紧贴在单元格的某一边,对应于东南西北以及四个角n,a,e,w,nw,sw,se,ne,center(默认值)row单元格行号整数column单元格列号整数rowspan行跨度整数columnspan列跨度整数ipadx,ipady组件内部在x/y方向上填充的空间大小单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点)padx,pady组件外部在
7、x/y方向上填充的空间大小单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点)例1-3网格布局管理grid()place():位置布局方式,允许指定组件的大小和位置。优点是可以精确控制组件的为主,不足是改变窗口大小时,子组件不能随之灵活改变大小。l place(option=value,.)位置布局管理Option选项选项描述描述取值范围取值范围x,y将组件放到指定位置的绝对坐标从0开始的整数relx,rely将组件放到指定位置的相对坐标取值范围0-1.0height,width高度和宽度,单位像素anchor对齐方式,对应于东南西北以及四个角n,a,e,w,nw,sw,se,ne,ce
8、nter(默认值)例1-4root=Tk(className=“登录”)rootwidth=200;rootheight=80#设置窗口大小Label(root,text=“用户名”,width=6).place(x=1,y=1)#“用户名”标签放置绝对坐标(1,1)Entry(root,width=20).place(x=45,y=1)#文本框放置绝对坐标(45,1)Label(root,text=“密码”,width=6).place(x=1,y=20)#“密码”标签放置绝对坐标(1,20)Entry(root,width=20,show=*).place(x=45,y=20)#文本框放置
9、绝对坐标(45,20)Button(root,text=“登录”,width=8).place(x=40,y=40)#“登录”按钮放置绝对坐标(40,40)Button(root,text=“取消”,width=8).place(x=110,y=40)#“取消”按钮放置绝对坐标(40,110)root.mainloop()位置布局管理place()1几何布局管理目录创建Windows窗口2 常用Tkinter组件3事件处理4组件组件描述描述Button按钮控件Entry输入控件,用于简单文本内容输入Label标签控件,显示文本或位图Text文本控件,用于显示多行文本Message消息控件,用于
10、显示多行文本Checkbutton多选框控件,用于显示多项选择框Listbox列表框控件,用于显示一个字符串列表Frame框架控件,在屏幕上显示一个矩形区域,用来作为容器Radiobutton单选按钮控件,显示单选按钮Menu菜单控件,显示菜单栏、下拉菜单和弹出菜单Menubutton菜单按钮控件,用于显示菜单项tkMessageBox用于显示应用程序的消息框Canvas画布控件,用于显示图形元素,比如线条或文本等常用组件属性属性描述描述bg控件背景颜色font控件字体anchor内容停靠位置,对应于东南西北以及四个角text显示文本内容state设置组件状态,normal(正常)、activ
11、e(激活)、disable(禁用)常用Tkinter组件标准属性 设置组件属性的方法:button=Button(root,text=“确定”)button.config(text=“确定”)button“text”=“确定”创建Label标签对象:Label(master,option=value,.)常用属性:Label标签控件Label标签控件用于在窗口显示文本或位图属性属性说明说明width宽度height高度justify指定多行的对齐方式,可以使用的值为left或rightanchor指定文本或位图在Label中的显示位置,对应东南西北以及四个角from tkinter impor
12、t*root=Tk(className=用于显示标签的窗口)root.geometry(500 x100)label=Label(root,text=我只是给你演示一下标签,width=50,height=5)labelbg=redlabel.config(anchor=ne)label.pack()Label标签控件例1-5 创建Button按钮:Button(master,option=value,.)常用属性:Button按钮控件Button控件用于实现按钮。按钮可以包含文本或图像,可以通过command属性调用Python函数或方法关联到按钮上。属性属性说明说明width设置显示宽度,
13、如未设置,其大小适应内容标签height设置显示高度,如未设置,其大小适应内容标签text指定按钮显示文本内容command指定按钮的事件处理函数bg设置背景颜色fg设置前景颜色anchor指定文本或位图在Label中的显示位置,对应东南西北以及四个角state设置组件状态,normal(正常)、active(激活)、disable(禁用)from tkinter import*from tkinter.messagebox import*def callback():showinfo(Python Command,人生苦短,我用Python)root=Tk(className=按钮示例)bu
14、tton1=Button(root,text=设置按钮状态,width=21,state=DISABLED)button1.pack()button2=Button(root,text=设置command事件调用命令,width=28,command=callback)button2.pack()button3=Button(root,text=设置高度宽度以及文字显示位置,bg=green,fg=yellow,anchor=sw,width=30,height=2)button3.pack()root.mainloop()Button按钮控件例1-6 创建Entry当行文本框:Entry(m
15、aster,option=value,)常用函数:l get():获取文本框中的字符串l insert(1,”文字”):指定位置插入文本l delete(0,END):从第一个字符到最后删除l focus_set():获得焦点Entry单行文本框Entry控件用于输入单行内容和显示文本。from tkinter import*def btnConvert():#按钮事件处理函数 cd=float(entry.get()#获取文本框内容 label.config(text=%.2fC=%.2fF%(cd,cd*1.8+32)#转换后华氏度在标签显示摄氏度 entry.delete(0,END)#
16、清空文本框 entry.insert(0,输入摄氏度)#文本框添加文本内容root=Tk(className=温度转换)root.geometry(400 x200)Label(root,text=转换CtoF.,height=5,width=20,fg=blue).pack()entry=Entry(root)entry.pack()Button(root,text=转换温度,command=btnConvert).pack()#设置按钮及按钮事件处理entry.focus_set()#单行文本框获取焦点Entry单行文本框例1-7 创建及显示Frame对象:l Frame(master,o
17、ption=value,)显示Frame对象:l Frame对象.pack()例如:l f=Frame(root,height=100,width=400,bg=green)l f.pack()向Frame组件添加组件,例如:l Label(f,text=“Hello”).pack()#向f上添加一个Label组件Frame框架控件Frame框架组建在屏幕上显示为一个矩形区域,作为其他组件的容器。from tkinter import*root=Tk(className=使用Frame示例)f1=Frame(root)f1.pack()f2=LabelFrame(root,text=第二个带标
18、签的LabelFrame)f2.pack()redButton=Button(f1,text=红色按钮,bg=red)greenButton=Button(f1,text=绿色按钮,bg=green)redButton.pack(side=left)greenButton.pack(side=right)yellowButton=Button(f2,text=黄色按钮,bg=yellow)yellowButton.pack(side=bottom)Frame框架组建例1-81几何布局管理目录创建Windows窗口2 常用Tkinter组件3事件处理4 事件类型的通用格式:l 事件类型必须放置在
19、尖括号内。type描述类型,比如键盘按键、鼠标单击等。modifier用于定义组合键,detail用于明确定义是哪一个键或按钮的事件,比如1表示鼠标左键,2表示鼠标中键,3表示鼠标右键。常见事件:l 鼠标:鼠标左键按下,中键按下,右键按下l 键盘:按下键盘某键、释放键盘某键l 组合键:同时按下alt+A事件处理事件:程序发生的事,比如鼠标左键单击等。对于发生的事件,程序需要作出反应,使用事件处理函数来指定当触发某个事件时所做的操作。创建组件对象时指定l 通过command参数指定事件处理函数l Button(master,command=callback)实例绑定l 调用组件实例对象bind方
20、法指定组件实例绑定事件。常用方式l 组件对象实例名.bind(“”,事件处理函数)事件绑定程序建立一个处理某一事件的事件处理函数,称为绑定。事件绑定创建组件对象时指定Callback例1-9 事件处理函数往往带有一个event参数,触发事件调用事件处理函数时,将传递Event对象实例。例1-10from tkinter import*def printkey(event):print(你按下了:+event.char)root=Tk(className=事件响应)entry=Entry(root)entry.bind(,printkey)entry.pack()entry.focus_set(
21、)root.mainloop()事件处理函数定义事件处理函数 pyinstaller是一个将Python语言脚本(.py文件)打包成可执行文件的第三方库,可用于Windows、Linux、Mac OS X等操作系统。安装:pip install pyinstallerpyinstaller cmd窗口打包l pyinstaller-F-w -p 源文件名.py-F:生成单个文件,否则会在dist文件夹中生成动态链接库-w:去除控制台窗口-p:添加第三方库所在的路径,如第三方库已经pip安装则省略 源文件名需要包含路径,否则需切换到文件所在目录;文件路径不能有空格和英文句号;源文件必须是UTF-8编码l 打包后将在源文件所在目录生成dist和build两个文件夹,其中build是存储临时文件的目录,可以安全删除Pyinstaller生成可执行文件