1)界面输入系统
在设计界面窗口之前,首先需要确认要通过界面输入和输出哪些变量或文件。在Multall系统中,设计参数的输入是在Meangen模块中实现的,所以首先需要确认Meangen模块的输入变量的变量名及物理意义等信息。将修改后的Meangen模块的输入变量汇总至表7-13中。其中对于代表工质类型的IPROPS变量的取值,本设计中提供了理想气体idealgas和其他几种常用于涡轮设计的实际气体,包括水蒸气、二氧化碳、氨气、R12、R600、R245fa六种,当需要对它的取值进行扩展时,只需要向程序中的prop List[‘values’]列表添加新的工质名称即可,当然,同时也必须保证REFPROP程序的流体文件库中包含该工质的数据文件。
表7-13 Meangen模块的输入变量及其物理意义
根据输入变量的取值方式和Tkinter不同部件的特点,输入变量需要选择一个合适的Tkinter部件来获取用户输入的值。具体选择合适部件的规则如下:
如果某个变量的取值方式为从很少的几个值中选择其中一个,则适合使用Radiobutton部件把所有选项都在界面上显示出来让用户选择;如果某个变量的取值方式是从一组较多的值中选择其中一个,则适合使用Combobox部件为用户提供一个下拉列表选择;如果某个变量的取值是一组连续的整数,则适合使用Spinbox部件让用户可以自由输入的同时还能使用上下调节按钮进行微调;如果某个变量的取值是一段或几段连续的实数域,则应该使用Entry部件来让用户自由输入该变量的取值。
按照上述规则,在本设计的图形用户界面程序中为Meangen模块的各输入变量选择的输入部件如表7-14所示。
表7-14 各输入变量使用的输入部件
续表
确定好所有的输入变量所用来获取用户输入的值的输入部件以后,使用Tkinter工具库的Tk方法创建一个主窗口self.window,再采用Tkinter工具库的绝对布局方法place按照坐标将这些部件逐一摆放到主窗口中去。
除了按照坐标逐一摆放之外还应该考虑到在一次完整的设计中并不需要输入所有的变量。首先,当代表工质类型的IPROPS变量选择为程序提供的六种实际气体之一时,就不需要再像选择了理想气体时那样输入气体常数和气体比热比两个变量,因此为IPROPS变量的输入部件prop List通过bind函数绑定一个事件Comboboxselected和一个回调函数RGAS_and_GAMM,即当用户为IPROPS变量选中一个值时就会执行这个回调函数,该回调函数的功能是让RGAS和GAMMA的输入部件的state参数在NORMAL和DISABLED之间改变从而实现该部件在可选和不可选的状态之间改变。其次,设计半径的方式是通过RADTYPE的值来确定从输入级焓降DHO和直接输入半径RDES中二者选其一,RADTYPE的值是通过Radiobutton部件输入的,而Radiobutton部件可以直接通过可选参数command绑定命令,因此直接在该部件的命令函数rad TypeCMD中实现DHO和RDES的可选状态切换即可。最后,定义速度三角形有四种方式且通过INTYPE的值来确定采用哪一组值来定义,每一组值都由三个变量组成,如果按照之前的方法把所有的值都显示在界面上然后改变它们的可选状态,则需要一片很大的区域,故此处采用的方式是提供一片恰好能容纳三个输入部件的区域,当用户切换定义速度三角形的方式时,用新的部件来覆盖之前的部件。
2)文件输入系统(www.daowen.com)
一个完整的程序不仅应该让用户能通过界面输入数据这一种方式来进行设计,还应该让用户可以直接把一个含有设计参数的文件中的数据导入程序的界面上然后再根据需要任意调整,这里对实现后一功能进行说明。文件输入系统通过一个“导入”菜单来控制,具体功能由multall_window类的两个成员函数selectFile和readFile来实现。
首先使用Menu方法为主窗口self.window加入一个菜单栏self.menubar并且在菜单栏上添加一个“导入”菜单。“导入”菜单功能又分为两个部分,一部分是导入一个设计好的示例文件,另一部分是导入用户通过文件选择框自行选择的示例文件。这里一共给出了6个示例文件,这几个示例文件的部分主要参数如表7-15所示。在“导入”菜单中为这6个示例文件创建一组variable参数相同路径变量self.file_path的Radiobutton控件,当用户选择其中的一个示例时便把该示例的文件路径赋值给self.file_path变量。“导入”菜单中的“自定义文件”按钮是采用tk FileDialog工具库中的askopenfilename方法来打开文件选择框让用户选择指定文件类型的文件,选择自定义文件后,同样将该文件的文件路径赋值给self.file_path变量,这个过程由select File成员函数来实现。
表7-15 示例文件的主要参数
无论是直接通过选择一个示例还是通过文件选择框设置文件路径变量self.file_path,都需要按照获取的指定路径读取文件内的数据,这一步通过成员函数readFile来实现。由于该过程并不需要往文件中写入数据,故为了保证文件内数据的安全性,采用只读方式的open语句打开self.file_path路径下对应的文件。然后建立一个列表,列表内容为使用readlines方法按整读取选择的文件内的数据内容。由于readlines方法会读取空格和换行等所有的符号,所以还必须使用strip方法来去掉列表内的每一个元素的换行符。接下来再按照顺序使用set方法分别把列表内的元素赋值给每一个设计变量并显示在界面上。最后关闭文件并且必须强制执行一次in-TypeCMD、rad TypeCMD和RGAS_and_GAMM函数更新界面上的一些显示,否则一些功能将需要手动再点击一次才能实现。read File函数的程序实现如图7-7所示。
图7-7 读取文件功能函数的程序实现
3)绘图系统
Multall系统中除了提供Meangen、Stagen和Multall三个计算模块的源代码之外还提供了一个编译好的二进制文件plotall-17.1.x,它的功能是读取Multall系统的三维通流设计结果并进行绘图。该二进制文件是通过Fortran语言编写然后编译得到的,但是由于系统的开发者在开源的文件包中并未提供该文件的源代码,难以让该程序的功能通过界面实现。故在本设计中设计了一个绘图菜单,绘图菜单由两个按钮组成,一个是“绘图帮助”按钮,另一个是“开始绘制”按钮。点击“绘图帮助”按钮会打开一个由文本编辑器编写的plotall程序的说明文档,说明文档对plotall程序的所有功能及实现的每个步骤都做了详细的解释。点击“开始绘制”按钮则会在系统的终端上开始调用执行plotall程序,用户可以按照绘图帮助说明文档上的说明在终端上进行输入最后得到想要绘制的图形。以下对plotall程序进行说明。
对于不同的绘图结果,plotall程序的绘制步骤也不同,详细的绘制步骤可以参照绘图帮助文档中的说明,但是它们大致都需要经过以下步骤。
选择想要绘制的物理量。plotall程序总共能够绘制34种物理量的不同图形,这些物理量如表7-4和图7-8所示,它们的中文含义可以参考绘图帮助文档。
图7-8 plotall程序可绘制的物理量
选择要绘制的图像的类型。图像大致分为两类,第一类是等值线图,第二类是坐标分布图。如果选择绘制等值线图则输入要绘制的面,如果选择绘制坐标分布图则输入坐标代表的含义,输入指定方向(周向、展向或流向)上要绘制的网格点的编号,另外,应选择输出绘图文件的方式。通常选择“C”可直接输出一个能够显示在显示器上的图片。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。