




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EasyGui Tutorial中文1.一个关于使用的IDLE编辑器编写EasyGui的警告如果利用IDLE来运行easygui所写的程序,你可能会遇到问题。尝试并找到它。 easygui是一个Tkinter的集合并且有着自身的事件循环。 IDLE也是一个tkinter写的应用程序,有着它自身的事件循环。两者可能会发生冲突,带来不可预测的结果。 如果你发现你有这样的问题,尝试着使用IDLE之外的编辑器去运行你的程序。2.介绍在easygui,所有的gui之间的交互都是通过简单的函数调用。这是一个简单演示easygui使用程序。屏幕所显示的结果在EasyGui主页上有相应的显示。代码如下:from easygui import *import syswhile 1:msgbox(Hello, world!)msg =What is your favorite flavor?title = Ice Cream Surveychoices = Vanilla, Chocolate, Strawberry, Rocky Roadchoice = choicebox(msg, title, choices)# note that we convert choice to string, in case# the user cancelled the choice, and we got None.msgbox(You chose: + str(choice), Survey Result)msg = Do you want to continue?title = Please Confirmif ccbox(msg, title): # show a Continue/Cancel dialogpass # user chose Continueelse:sys.exit(0) # user chose Cancel3. EasyGui实例程序运行EasyGui的实例程序,可以通过命令行的方式:python easygui.py或者从一个IDE(IDLE, PythonWin, Wing等等)按一下方式运行:import easygui as gg._test()这将使您尝试各种easygui的函数,并将你选择的结果打印到控制台。4.导入easygui为了使用easygui,你必须将其导入。最简单的导入声明是:import easygui如果你使用这种形式的导入,那么你使用easygui的函数的时候,必须在函数的前面加上前缀easygui,像这样:easygui.msgbox(.)另外一种选择是这样导入easygui的包:from easygui import *这使得我们更容易调用easygui的函数;你不需要再在函数的前面加上easygui的前缀,你可以这样编写代码: msgbox(.)第三种选择是按照以下的导入声明去使用:import easygui as g这可以让你保持easygui命名空间使用最短的输入。 你可以这样访问easgui函数,例如:g.msgbox(.)5. 使用easygui一旦你的模块引进easygui,GUI操作是一个简单的事只要通过easygui函数调用几个参数。例如,用easygui,经典的的“helloworld!”程序是像这样的:from easygui import *msgbox(Hello, world!)看看一个easygui所输出的外观的demo,调用easygui命令行,像这样子:python easygui.py看到的示例代码调用了easygui函数,并且以easygui.py结束。6.easygui函数的默认参数对于所有的容器,前两个参数是信息和标题。按照这个顺序,在某些情况下,这可能不是最利于用户使用的安排。(例如:对话框在获取目录和文件名的时候忽略了信息的参数)但我觉得保持这种一致性贯穿于所有的窗口部件是一种更为重要的考虑。绝大部分的easygui函数都有默认的参数。几乎所有的容器都会显示一个信息和标题。标题默认是空字符串,信息则通常有一个简单的默认值。这使它尽可能地指定越少的参数当你需要为了得到你想要的结果。例如,标题的参数对于msgbox是可选的,所以你可以向msgbox指定只有一个消息,例如:msgbox(Danger, Will Robinson!)或者指定一个标题和信息,像这样:msgbox(Danger, Will Robinson!, Warning!)在各种类型的buttonbox里面,默认的信息是Shall I continue?, 所以你可以(如果你想)调用他们没有参数。这里我们调用ccbox(关闭/取消ccbox,返回一个布尔值)没有任何的参数:if ccbox(): pass # user chose to continueelse: return # user chose to cancel7.在easygui的函数调用中使用关键参数 可以使用关键字参数当调用EasyGui函数时。(在此以前,只有使用0.80版本位置参数是例入文档的。在版本0.80中参数的名字被修改得更为一致了,而且使用关键字参数是列入文档的。)假设如说你想要使用一个buttonbox,但(不管出于什么原因)没有想指定的标题(第二个参数)的位置参数。你仍可以指定选择参数(第三个参数)去使用关键字,像这样:choices = Yes,No,Only on Fridayreply = choicebox(Do you like to eat fish?, choices=choices)8.使用buttonboxes这里有一系列为了共同的需要而内建于最顶端的buttonbox()的函数。8.1 msgboxMsgbox用来显示消息,并给出了OK按钮。你可以发送任何你想要的消息,带着任何你要的标题。你甚至可以覆盖默认文本在“ok”按钮如果你愿意的话。以下是msgbox的示例函数:def msgbox(msg=(Your message goes here), title=, ok_button=OK): .最简洁的方法去覆盖它的按钮文本是使用一个关键参数,像这样msgbox(Backup complete!, ok_button=Good job!)看看以下的例子msgbox(Hello, world!)或者msg = Do you want to continue?title = Please Confirmif ccbox(msg, title): # show a Continue/Cancel dialogpass # user chose Continueelse: # user chose Cancelsys.exit(0) 8.2 ccboxccbox提供了一个选择:继续和取消,并返回要么1(继续)或0(取消)。注意:这个ccbox返回整数值(1和0),不是真正的布尔值(true或false),但在python的2.3版本上可以实现。8.3ynboxynbox提供了一个选择是或者不是,并返回要么1(是的)或0(没有)。注意:这个ynbox返回整数值(1和0),不是真正的布尔值(true或false),但在python的2.3版本上可以实现。msgbox(Hello, world!)msg = Do you want to continue?title = Please Confirmif ccbox(msg, title): # show a Continue/Cancel dialogpass # user chose Continueelse: # user chose Cancelsys.exit(0) 9.按钮-自定义为了指定自己的一套按钮在buttonbox里可以使用buttonbox()函数这buttonbox可以被用来显示一组你能选择的按钮。当用户点击一个按钮时,buttonbox(返回选择的文本)。如果用户取消或关闭buttonbox,默认选择(第一选择)将被返回。9.1 buttonboxButtonbox显示一个消息,一个标题,和一组按钮。并且返回用户所选择的按钮的文本。9.2 indexboxIndexbox显示一个消息,一个标题,和一组按钮。返回用户所选择的相应元素的索引。例如,如果你调用indexbox函数并且有三种选择(A,B,C),则indexbox就返回0如果用户选择A,1假如他选择了B和2如果他选择了C。9.3 boolboxBoolbox (boolean box) 显示一个消息,一个标题,和一组按钮。它所返回的如果是1则第一个按钮被选中。否则返回0。这里有个关于boolbox的简单例子:message = What does she say?title = if boolbox(message, title, She loves me, She loves me not):sendher(Flowers)else: pass9.4 如何在buttonbox上显示图像当你调用buttonbox的函数时,或者其他显示一个按钮的函数时,像msgbox, indexbox, ynbox等等,你可以指定关键字参数image=xxx,xxx是文件名,而且是gif格式的图像。注意目前只支持gif格式的图片。如果图片的参数被指定了,那么图片将会显示在信息上面。这里是一些简单的代码在easygui的演示程序上:image = python_and_check_logo.gifmsg = Do you like this picture?choices = Yes,No,No opinionreply=buttonbox(msg,image=image,choices=choices)10从一系列项目中选择10.1 choicebox按钮有利于给用户提供一种简单的选择,但是如果有很多选择项,或者选项的文本是太长,这样一个更好的策略是将它们当作列表。Choicebox给用户提供了一种方式从一系列的选项中进行选择。选项被指定在一个序列当中(一个元组或者列表)。在选项提出之前,已经会有大小写敏感的分类了。键盘可以用来选择列表中的一个元素。例如:按下键盘上的g键,将会跳到选项中的第一个以g开头的元素。再次按下g键,则将会光标跳到下一个以g开头的元素。在最后一个以g开头的元素,再次按下g键则会引起选择回到在列表的开头,并且跳转到第一个以g开头的元素。如果没有元素是以g开头的,则最后的元素位置前的 g 会发生被选择。如果没有元素以字母g之前的字母开头,那么在列表中第一个元素将会被选中。msg =What is your favorite flavor?title = Ice Cream Surveychoices = Vanilla, Chocolate, Strawberry, Rocky Roadchoice = choicebox(msg, title, choices)# another exaple of a choicebox10.2multchoiceboxMultchoicebox()函数为用户提供了一种新的途径从所列的选择项中进行选择。它的界面看起来就像choicebox,但是用户可以选择零,一,或多个选择。选项被指定在一个序列当中(一个元组或者列表)。在选项提出之前,已经会有大小写敏感的分类了。# an example of a multchoicebox11.输入信息11.1 enterboxEnterbox是用来获取用户输入的字符串的一种简单方式。11.2 integerboxIntegerbox是用来获取用户输入的整数的一种简单方式。11.3 multenterboxMultenterbox用来在单屏幕上显示多重输入框的一种简单方式。在multenterbox中如果values比names要少的话,则列表中的值是空字符串直到values的数量跟names一样多。如果values比names更多的话,则列表中的值将会被截断好让values的数量跟names一样多。如果用户取消操作,则返回域中的列表的值或者None值。下面是一些例子,显示值在被接收之前是如何从multenterbox中返回和验证是否有效。msg = Enter your personal informationtitle = Credit Card ApplicationfieldNames = Name,Street Address,City,State,ZipCodefieldValues = # we start with blanks for the valuesfieldValues = multenterbox(msg,title, fieldNames)# make sure that none of the fields was left blankwhile 1:if fieldValues = None: breakerrmsg = for i in range(len(fieldNames):if fieldValuesi.strip() = :errmsg = errmsg + (%s is a required field.nn % fieldNamesi)if errmsg = : break # no problems foundfieldValues = multenterbox(errmsg, title, fieldNames, fieldValues)print Reply was:, fieldValues下面是一些例子,显示值在被接收之前是如何从multpasswordbox中返回和验证是否有效。msg = Enter logon informationtitle = Demo of multpasswordboxfieldNames = Server ID, User ID, PasswordfieldValues = # we start with blanks for the valuesfieldValues = multpasswordbox(msg,title, fieldNames)# make sure that none of the fields was left blankwhile 1:if fieldValues = None: breakerrmsg = for i in range(len(fieldNames):if fieldValuesi.strip() = :errmsg = errmsg + (%s is a required field.nn % fieldNamesi)if errmsg = : break # no problems foundfieldValues = multpasswordbox(errmsg, title, fieldNames, fieldValues)print Reply was:, fieldValues12.让用户输入密码12.1 passwordboxpasswordbox是用来获取用户输入的密码的一种简单方式。当用户输入密码时,它将会掩盖掉密码内容。12.2 multpasswordboxMultpasswordbox和multenterbox具有相同的接口,但当它显示的时候,它的最后一个输入域假设是密码,而且用星号掩盖了内容。13.显示文本Easygui提供了函数用于显示文本13.1 textboxtextbox()函数用来按字体比例显示文本,而且文本是自适应(word-wrap)的。13.2 codeboxcodebox()函数用来按等宽字体显示文本,不是自适应的。注意你可以传递一个字符串或者一个序列通过codebox() 和textbox()这两个函数。一个序列将转换为相应的文本被显示。这意味着你可以用这些函数显示文件的内容像这样:filename = os.path.normpath(c:/autoexec.bat)text = open(filename).read()codebox(Contents of file + filename, text=text)14选择目录和文件一种常见的需要时要求用户给出一个文件名或者一个目录。easygui提供了一些基本的函数让用户来浏览文件系统,选择一个目录或者一个文件。(这些函数封装在widgets 和 classes in lib-tk.之中)。注意在现有的easygui版本中,startpos参数不被支持。14.1 diropenboxDiropenbox返回目录的名字14.2 fileopenboxfileopenbox 返回文件的名字14.3 filesaveboxFilesavebox返回文件的名字。它假定是保存一个新的文件,所以如果你选择了一个文件已经存在,你得到一个警告信息告诉你,文件已经存在。15记住用户的设置15.1 EgStore一种常见的做法是询问用户对某些设置的要求,然后对其进行“持久化”,或者保存在硬盘上,以便于用户下次使用你的应用程序时,能够记住用户之前的设置。为了实现对用户的设置进行存储和恢复这一过程,EasyGui提供了一个叫做EgStore的类。为了记住某些设置,你的应用程序必须定义一个类(暂时称之为设置类,尽管你随意地使用你想要的名称设置它)继承自EgStore类。你的应用程序必须创建一个该类的对象(暂时称之为设置对象。)设置类的构造函数(_init_方法)必须初始化所有的你想要它所记住的那些值。一旦你这样做了,你就可以在设置对象中通过设定值去实例化变量,从而很简单地记住设置。之后使用settings.store()函数在硬盘上持久化设置对象。下面是创建一个Settings类的源代码:#- # define a class named Settings as a subclass of EgStore #- class Settings(EgStore): def _init_(self, filename): # filename is required #- # Specify default/initial values for variables that # this particular application wants to remember. #- self.userId = self.targetServer = #- # For subclasses of EgStore, these must be # the last two statements in _init_ #- self.filename = filename # this is required self.restore() # restore values from the storage file if possible下面是创建一个Settings对象的源代码,简单地创建了一个Settings对象从设置文件去恢复它的值,如果设置文件存在的话。#- # create settings, a persistent Settings object # Note that the filename argument is required. # The directory for the persistent file must already exist. #- settingsFilename = os.path.join(C:, m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北省定州市辅警招聘考试试题题库含答案详解(a卷)
- 2025年K2学校STEM课程实施与科学教育改革研究报告
- 初中美术九年级上册统编教案
- 偏头痛诊治攻略2025
- 世界人口日人口发展现状老龄化探讨提升出生人口素质课件
- 初中数学九年级下册统编教案 7.6用锐角三角函数解决问题(第1课时)
- 2025届高考物理大一轮复习课件 第六章 第31课时 专题强化:动力学和能量观点的综合应用
- DeepSeek大模型教育领域解决方案
- 江苏省苏州市2024-2025学年七年级下学期生物期末模拟试卷 (含解析)
- 相似三角形测试题及答案
- 2025年上半年酒店市场营销部工作总结与下半年计划
- 旅居基地免责协议书
- 2025陕西水务集团限公司招聘80人易考易错模拟试题(共500题)试卷后附参考答案
- 江西省南昌市2025届高三下学期二模化学试题 含解析
- 现代公司制度试题及答案
- DB42-T 2078-2023 红火蚁监测与防控技术规程
- 企业统计考试试题及答案
- 2022教学能力大赛《智能网联汽车传感器测试与装调》实施报告
- 电动车交通安全教育课
- 人教版九年级语文中考真题汇编 《西游记》(2022-2024)全国中考语文真题
- 2025年高考物理考试易错题易错点07动量定理、动量守恒定律(3陷阱点7考点4题型)(学生版+解析)
评论
0/150
提交评论