【文档说明】Python游戏设计案例实战第4章--Tkinter图形界面设计——猜数字游戏.ppt,共(29)页,568.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2436.html
以下为本文档部分文字说明:
第4章Tkinter图形界面设计•主讲夏敏捷•计算机学院副教授开发猜数字游戏•【案例】使用tkinter开发猜数字游戏,运行效果如图所示。•游戏中电脑随机生成1024以内数字,玩家去猜,如果猜得数字过大过小都会提示,程序要统计玩家猜的次数。4.
1Python图形开发库Python提供了多个图形开发界面的库,几个常用PythonGUI库如下:(1)Tkinter(2)wxPython:wxPython是一款开源软件,是Python语言的一套优秀的G
UI图形库,允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。(3)Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。4.
1.1创建Windows窗口【例4-1】Tkinter创建一个Windows窗口的GUI程序。importtkinter#导入Tkinter模块win=tkinter.Tk()#创建Windows窗口对象win.title('我的第一个GUI程序')#设置窗口标题win.mainloop()#进
入消息循环,也就是显示窗口4.1.2几何布局管理器•Tkinter几何布局管理器用于组织和管理父组件(往往是窗口)中子组件的布局方式。tkinter提供了3种不同风格的几何布局管理类:pack、grid
和place。•1.pack几何布局管理器4.1.2几何布局管理器•2.grid几何布局管理器•grid几何布局管理采用表格结构组织组件。4.1.2几何布局管理器•3.place几何布局管理器•place几何布局管理允许指定组件的大小与位置。place的优点是可以精确控制组件的位置
,不足之处是改变窗口大小时,子组件不能随之灵活改变大小。4.2常用Tkinter组件的使用•4.2.1Tkinter组件4.2.2标准属性•组件标准属性也就是所有组件(控件)的共同属性,如大小,字体和颜色等等。常用的标准属性如表4-5所示。4.2.
3Label标签组件•Label组件用于在窗口中显示文本或位图。常用属性如表4-6所示。4.2.4Button按钮组件•Button组件(控件)是一个标准的Tkinter部件,用于实现各种按钮。按钮可以包含文本或图像,您可以通过command属性
将调用Python函数或方法关联到按钮上。Tkinter的按钮被按下时,会自动调用该函数或方法。该按钮可以只显示一个单一字体的文本,但文本可能跨越多行。此外,一个字符可以有下划线,例如标记的键盘快捷键。TkinterButton按钮属性和方法如表4-7和4-8所示。4.2
.6列表框组件Listbox•列表框组件Listbox用于显示多个项目,并且允许用户选择一个或多个项目。4.2.7单选按钮和复选框•单选按钮(Radiobutton)和复选框(Checkbutton)分别用于实现选项的单选和复
选功能。Radiobutton用于同一组单选按钮中选择一个单选按钮(不能同时选定多个)。Radiobutton可以显示文本,也可以显示图像。Checkbutton用于选择一项或多项,同样Checkbutton可以显示文本,也可
以显示图像。4.2.7单选按钮和复选框•单选按钮(Radiobutton)和复选框(Checkbutton)分别用于实现选项的单选和复选功能。Radiobutton用于同一组单选按钮中选择一个单选按钮(不能同时选定多个)。Radiobutton可以显示文本,也可以显示图像。C
heckbutton用于选择一项或多项,同样Checkbutton可以显示文本,也可以显示图像。图形用户界面应用程序通常提供菜单,菜单包含各种按照主题分组的基本命令。图形用户界面应用程序包括2种类型的菜单。主菜单:提供窗体的菜单系统。通过单击可下拉出子菜单,选择命令可执行相关的操作。常
用的主菜单通常包括:文件、编辑、视图、帮助等。上下文菜单(也称为快捷菜单):通过鼠标右击某对象而弹出的菜单,一般为与该对象相关的常用菜单命令。例如:剪切、复制、粘贴等。4.2.8菜单组件Menu4.2.9对话框•对话框用于与用户交互和检索信息。tki
nter模块中的子模块messagebox、filedialog、colorchooser、simpleDialog,包括一些通用的预定义对话框;用户也可以通过继承TopLevel创建自定义对话框。•图4-18打开文件对话框运行效果
4.2.9对话框•图4-19打开颜色对话框运行效果4.2.10消息窗口(消息框)•消息窗口(messagebox)用于弹出提示框向用户进行告警,或让用户选择下一步如何操作。消息框包括很多类型,常用的有info、warning、error、yesno、ok
cancel等,包含不同的图标、按钮以及弹出提示音。4.2.11Frame框架组件•Frame组件是框架组件,在进行分组组织其他组件的过程中是非常重要的,负责安排其他组件的位置。Frame组件在屏幕上显示为一个矩形区域,作为显示其他组件的容器。
4.2.12Scrollbar滚动条组件•Scrollbar组件是滚动条组件,Scrollbar组件用于滚动一些组件的可见范围,根据方向可分为垂直滚动条和水平滚动条。Scrollbar组件常常被用于实现文本、画布和列表框的滚动。•Scrollbar组件通常与Text组件、Ca
nvas组件和Listbox组件一起使用,水平滚动条还能跟Entry组件配合。4.4Tkinter字体4.4.1通过元组表示字体通过3个元素的元组,可以表示字体:(fontfamily,size,modifiers)作为一个元组tuple的第一个元素fontfamily是字体名,size为
字体大小单位为point;modifiers为包含粗体、斜体、下划线的样式修饰符。4.4Tkinter字体4.4.2通过Font对象表示字体使用tkFont.Font来创建字体。格式如下:ft=tkFont.Font(family='字体名',size,weight,sla
nt,underline,overstrike)其中:size为字体大小;weight='bold'或'normal','bold'为粗体;slant='italic'或'normal','italic'为斜体;
underline=1或0,1为下划线;overstrike=1或0,1为删除线。ft=Font(family="Helvetica",size=36,weight="bold")4.5Python事件处理•所谓事件(event)就是
程序上发生的事。例如用户敲击键盘上某一个键或是单击、移动鼠标。而对于这些事件,程序需要做出反应。Tkinter提供的组件通常都有自己可以识别的事件。例如当按钮被单击时执行特定操作或是当一个输入栏成为焦点,而您又敲击了键盘上的某些按键,您所输入的
内容就会显示在输入栏内。•程序可以使用事件处理函数来指定当触发某个事件时所做的反应(操作)。4.5.1事件类型事件类型的通用格式:<[modifier-]…type[-detail]>事件类型必须放置于尖括号<>内。type描述了类型,例如键盘按键、鼠标单击。modi
fier用于组合键定义,例如Control、Alt。detail用于明确定义是哪一个键或按钮的事件,例如1表示鼠标左键、2表示鼠标中键、3表示鼠标右键。举例:<Button-1>按下鼠标左键。<KeyPress-A>按下键盘上的A键<Control-Shift-Ke
yPress-A>同时按下了Control、Shift、A三键。4.5.2事件绑定程序建立一个处理某一事件的事件处理函数,称之为绑定。1.创建组件对象时指定创建组件对象实例时,可通过其命名参数command指定事件处理函数。例defcallback():#事件处理函数s
howinfo("Pythoncommand","人生苦短、我用Python")Bu1=Button(root,text="设置事件调用命令",command=callback)Bu1.pack()2.实例绑定调用组件对象实例方法
bind可为指定组件实例绑定事件。这是最常用事件绑定方式。组件对象实例名.bind("<事件类型>",事件处理函数)例如假设声明了一个名为canvas的Canvas组件对象,想在canvas上按下鼠标左
键时画上一条线,可以这样实现:canvas.bind("<Button-1>",drawline)4.5.2事件绑定3.类绑定将事件与一组件类绑定。调用任意组件实例的.bind_class()函数为特定组件类绑定事件。组件实例名.bind_class("组件类","<事件类型>",事件处理函
数)4.5.2事件绑定4.程序界面绑定当无论在哪一组件实例上触发某一事件,程序都作出相应的处理。例如您可能会将PrintScreen键与程序中的所有组件对象绑定,这样整个程序界面就能处理打印屏幕的事件了。调用任意组件实例的.bind_all()函数为程序界面绑定事件。组件
实例名.bind_all("<事件类型>",事件处理函数)例如可以这样实现打印屏幕:widget.bind_all("<Key-Print>",printScreen)。5.标识绑定在Canvas画布中绘制各种图形,将图形与事件绑定
可以使用标识绑定tag_bind()函数。预先为图形定义标识tag后,通过标识tag来绑定事件。例如:cv.tag_bind('r1','<Button-1>',printRect)4.5.2事件绑定事件处理函数往往带有一个e
vent参数。触发事件调用事件处理函数时,将传递Event对象实例。defcallback(event):#事件处理函数showinfo("Pythoncommand","人生苦短、我用Python")【例4-39】触发keyPress键盘事件的例
子,运行效果如图4-34所示。开发猜数字游戏•【案例】使用tkinter开发猜数字游戏,运行效果如图所示。•游戏中电脑随机生成1024以内数字,玩家去猜,如果猜得数字过大过小都会提示,程序要统计玩家猜的次数。