写在前面:本文是一些关于IDL界面编程的自学总结,包括一些问题和基础语法的介绍,具体参考董彦卿老师的《IDL程序设计–数据可视化与ENVI二次开发》以及徐永明老师的《遥感二次开发语言IDL》,徐永明老师的书里主要介绍一些基础语法,和IDL遥感应用实例,董彦卿老师的书内容较多,适合作为帮助文档查看。
首先是一些常见问题
很多时候IDL需要和ENVI联动,如果没有打开ENVI或者中途关掉了ENVI可能会出现一个WIDGET_BASE: Invalid widget identifier: 19
的错误,这一点需要格外注意,以及,在调试过程中,如果出现问题后点击停止调试,那么ENVI也会被关掉,再运行时需要重启ENVI。
常用组件
(1)Base 组件:
Result=WIDGET_BASE([PARENT][,/KEYWORDS])
Base是其他所有组件的基础,需要首先创建,参数包括Floating:创建浮动窗口;Model:创建模式框窗口;mbar:创建菜单栏(初始界面创建常用);TLB_FRAME_ATTR:创建不同类型窗口;TLB_KILL_REQUEST_EVENTS:控制关闭相应事件
具体参数调用可以查看Harris帮助文档,
eg:
tlb = WIDGET_BASE(title = '标题', $
mbar = mbar, $
uname = 'tlb', $
/tlb_kill_request_events, $
/tlb_size_events, $
/column, $
map = 0, $ ;隐藏
event_pro = 'tlb_event')
(2) 按钮组件
Result=WIDGET_BUTTON([PARENT][,/KEYWORD])
参数包括value:不同类型的显示方式,一般使用字符串显示;Menu:创建菜单按钮;Separator:菜单之间的分割线;复选或单选:由按钮父组件WIDGET_BASE中EXCLUSIVE和NONEEXCLUSIVE控制
w_stat=WIDGET_BUTTON(mbar,/menu,value='统计信息')
;此处接上文代码,上文创建了base(包含mbar菜单栏)此处接着mbar创建子菜单button
w_Stat1=WIDGET_BUTTON(w_stat,value='波段统计信息',event_pro='stata')
;event_pro为点击按钮触发的事件
(3)标签组件Label
Result=WIDGET_LABEL([parent][,/keyword])
参数包括value:组件上显示的字符串,换行显示用string(13b)分隔,Frame为字符串外围边框宽度,为0则不显示。
wlabelR1 = WIDGET_LABEL(wpmBase, value = 'Rule 1: ',/align_left)
;这里写了个对齐方式
持续更新。。。。。