爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8455|回复: 24

[混合编程] IDL编程学习之GUI制作案例

[复制链接]

新浪微博达人勋

发表于 2018-8-14 15:04:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
;创建base
TLB=WIDGET_BASE(UVALUE='tlb',XSIZE=500,YSIZE=500,title='制作GUI')
;查看tlb的ID
print,tlb
;在tlb上创建按钮
button=widget_button(tlb,value='确定',uname='ok',XSIZE=200,YSIZE=200)
;查看按钮的ID
print,button
;显示tlb界面
widget_control,tlb,/realize

QQ截图20180814145243.jpg








密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-14 15:12:12 | 显示全部楼层
QQ截图20180814151309.jpg
这段话被说是什么不文明,不给发,也是醉了......

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-14 15:14:36 | 显示全部楼层
通过案例发现,通过widget_control显示base后,其上的按钮也一起显示了,所以只需要显示上级组件即可
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-15 09:46:47 | 显示全部楼层
案例2:
;创建base
TLB=WIDGET_BASE(UVALUE='tlb_uvalue',XSIZE=500,YSIZE=500,title='good_title')
;查看tlb的ID
print,tlb
;在tlb上创建按钮
button=widget_button(tlb,value='a button',uname='ok',XSIZE=200,YSIZE=200)
;查看按钮的ID
print,button
;显示tlb界面
widget_control,tlb,/realize
;获取tlb的uvalue
widget_control,tlb,get_uvalue=tlbuvalue
print,tlbuvalue
;修改tlb的uvalue
widget_control,tlb,set_uvalue=[1,2,3,4]
;获取修改后的uvalue
widget_control,tlb,get_uvalue=tlbuvalue
print,tlbuvalue
;获取按钮的value(不是uvalue)
widget_control,button,get_value=buttonValue
print,buttonValue
;获取按钮的uname
print,widget_Info(button,/uname)
;查看tlb的位置、偏移、大小
help,widget_info(button,/geometry),/str

QQ截图20180815094440.jpg


收获:
  • widget_base和widget_button的返回值是Long型数字;
  • base的是uvalue,button的是value,uname;
  • 疑问:ID,UVALUE/VALUE,UNAME是做什么的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-15 10:02:36 | 显示全部楼层
查找父子组件
接着上楼的结果,tlb的ID是1,BUTTON的ID是2,
输出button的子组件:
print,widget_Info(button,/child)
输出button的父组件:
print,widget_Info(button,/parent)
输出tlb的子组件:
print,widget_Info(tlb,/child)
输出tlb的父组件:
print,widget_Info(tlb,/parent)

结果:
           0
           1
           2
           0
button的子组件不存在(0);
button的父组件ID=1;
tlb的子组件ID=2;
tlb的父组件不存在(0)。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-15 10:05:32 | 显示全部楼层
查找base中uname=‘ok’的组件
print,widget_info(tlb,find_by_uname='ok')
结果:2
即组件ID=2,即button
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-28 09:27:57 | 显示全部楼层
对话框之[图像文件读取]


通过image=x,把图像数据读入了x
TIM截图20180828092206.jpg
IDL> help,x
X               BYTE      = Array[3, 364, 470]

当弹出对话框时,程序会暂停,等待对话框处理
对话框处理完毕,程序继续执行
pro dialog_read_ima
a=dialog_read_image(image=x)
help,x
end

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-28 10:41:36 | 显示全部楼层
对话框界面组件
总共有6个,
1、Dialog_Message,信息显示对话框;
TIM截图20180828093521.jpg
2、Dialog_PickFile,文件or文件夹选择对话框;
TIM截图20180828104114.jpg
3、Dialog_Read_Image,图像文件读取对话框;
4、Dialog_Write_Image,图像文件写出对话框;
可有可无的2个:
Dialog_PrinterSetup,打印机参数设置对话框;
Dialog_PrintJob,打印任务参数设置;

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-29 09:34:34 | 显示全部楼层
本帖最后由 15195775117 于 2018-8-29 09:36 编辑

IDL> slide_image,dist(1000)
这个功能界面组件的效果是:
左边显示整体,右边显示“全分辨率”的图;
如果图比较小,右边可能连滑动条都没了,因为没有放大的必要不过,这个图好像不能自定义配色,它自己采用了某种彩色配色~
TIM截图20180829093227.jpg


密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-8-29 09:43:18 | 显示全部楼层
矢量字体编辑器和显示工具
IDL> efont
TIM截图20180829094233.jpg
可以在黑色部分乱画来改变字体,
不过是很冷门的需求吧?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表