如前所述,GUI程序的m文件由一个一个独立的函数构成,与其他编程语言一样,变量的有效范围仅存在于一个函数之内,在函数之外是无效的。因此,从一个函数内获取函数之外的数据,或者想将数据传递到另一个函数,需要一些特殊的方法或技巧。
在GUI编程中,最常遇到的是对控件属性的获取及修改。例如,在一个用于计算的push_button的回调函数中,需要知道一个输入框控件中的文字,以便转换成数字后进行计算,再将结果输入一个文本显示控件中。这就要求能够获取该控件的句柄,以便对该控件进行 *** 作。在GUI程序的回调函数中都会传递一个参数handles,该参数包括了窗口中所有控件的句柄,是一个“句柄包”(因此称为handles)。有了该参数,调用任何控件的属性都是很容易的。例如:
handles.button_Calculate→string就表示一个“姓名”(tag属性)为button_Calculate的push_button的string属性的句柄。
GUI编程中,有时还需要进行数据的传递,例如将计算的中间结果传递到另一个回调函数中继续进行计算等。用全局变量可完成这一 *** 作。在GUI程序中,也可以定义全局变量,但是对于结构化编程来说,全局变量会给程序设计和维护带来很多问题,因此推荐用另一种方法完成数据的传递。
GUI所有控件的属性中都有一项“userdata”。这个属性是系统专门留给用户来使用的。程序设计时,通过set和get函数可以在这个属性中存取任何格式的数据。虽然这个属性中只能存取一个变量,但从前面的内容可知,MATLAB可以将多个不同类型的变量组合在一个Cell类型的变量中,因此理论上讲,通过一个控件的“userdata”属性可以传递任意多个不同类型的变量。
对于 Python 中的 GUI 程序,一般可以从三个要素来考虑,它们是:输入:指用户在界面上进行的交互 *** 作,例如鼠标点击、键盘输入等。在 Python 的 GUI 程序中,常常使用组件如文本框、按钮、下拉框等来接收用户的输入。
处理:指对用户输入的数据或 *** 作进行处理,一般会包括数据的验证、计算、存储等过程。在 Python 的 GUI 程序中,可以使用函数、类等来实现数据的处理。
输出:指将处理后的数据或结果输出到界面上,让用户进行查看或 *** 作。在 Python 的 GUI 程序中,可以使用标签、文本框、列表框等组件来显示处理结果。
总之,Python 中的 GUI 程序需要考虑用户输入、数据处理和结果输出等三个要素,通过合理的设计和使用相应的组件和工具,可以实现用户友好的交互体验和高效的数据处理功能。
MATLAB的GUI程序包含两个部分:一个由GUIDE编辑后生成的.fig文件,以及一个同名的.m文件。前者是一个图形,由一个窗口和程序界面所需的各种控件,如按钮、输入框、绘图区、滑动条等组成(事实上,装载这些控件的窗口本身也是一个控件)。后者是与前者配套的,主要包括窗口的生成函数和各控制消息的回调函数。
GUI程序运行的流程:程序首先生成一个窗口;等待并接收消息;在接收到消息后,寻找并执行与该消息对应的回调函数;重复二、三两步直到窗口关闭。GUI程序的.m文件只列出了窗口生成函数和消息回调函数,而消息检测与响应等内核部分由系统自动完成,无需用户参与,因此并没有体现出来。开发者理解GUI程序的运行流程,对于开发GUI程序是很有帮助的。
开发者理解GUI程序的运行流程,对于开发GUI程序是很有帮助的。
如前所述,GUIDE可以帮助程序开发者完成窗口生成、消息检测等工作,因此需要程序开发者完成的工作其实很简单,即在窗口上设计控件、定制控件的消息以及编制与消息对应的回调函数。下面分两部分叙述GUI界面控件设计以及消息与回调函数的设计。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)