IDL_GUI
菜单栏设计
PRO IDLGui
;构建界面
;显示
;添加事件
tlb=WIDGET_BASE(xsize=400,ysize=400,/column,mbar=mbar);实现基类
file=WIDGET_BUTTON(mbar, $ ;新建button,
value='文件')
open=widget_button(file,value='打开',/menu)
jpg=widget_button(open,value='jpg')
exist=widget_button(file,value='退出',/SEPARATOR)
WIDGET_CONTROL,tlb,/realize
END
效果------------------------------------》 定义一个界面并赋予事件过程
idlgui.pro
PRO IDLGui_event,event ;_event:程序关联
if(tag_names(event,/STRUCTURE_NAME) eq 'WIDGET_KILL_REQUEST') then begin
result=DIALOG_MESSAGE("是否关闭",/QUESTION)
CASE (result) OF
'Yes': BEGIN
WIDGET_CONTROL,event.TOP,/DESTROY
return
END
'No': BEGIN
RETURN
END
ELSE: BEGIN
END
ENDCASE
endif ;print,'now here'
uname=WIDGET_INFO(event.ID,/uname)
;help,event,
PRINT,'Now, you clicked '+uname
;获取变量
WIDGET_CONTROL,event.TOP,GET_UVALUE=ptr
CASE (uname) OF
'open': BEGIN
file=DIALOG_PICKFILE(FILTER='*.jpg',path=(*ptr).path,GET_PATH=path2);
;get_path:记住当前选中的路径然后赋值给path
(*ptr).path=path2
WIDGET_CONTROL,(*ptr).BTTEXT,SET_VALUE=file;设置值bttext
END
'show': BEGIN
WIDGET_CONTROL,(*ptr).BTTEXT,GET_VALUE=file;
READ_JPEG,file,data
wset,(*ptr).wind;设置当前窗口
TVSCL,data,/true;tv只认当前窗口
END
'exit': BEGIN
widget_control,event.top,/DESTROY;销毁
END
ENDCASE END PRO IDLGui
;构建界面
;显示
;添加事件
COMPILE_OPT idl2
tlb=WIDGET_BASE(/column,mbar=mbar,/TLB_KILL_REQUEST_EVENTS);实现基类 xsize=400,ysize=400,
file=WIDGET_BUTTON(mbar, $ ;新建button,
value='文件')
open=WIDGET_BUTTON(file,value='打开',/menu,uname='open')
jpg=WIDGET_BUTTON(open,value='jpg',uname='open')
exist=WIDGET_BUTTON(file,value='退出',/SEPARATOR,uname='exit')
;工具栏---带有系统图标的,如果是外部的图片用绝对路径
btbase=WIDGET_BASE(tlb,/row)
btOpen=WIDGET_BUTTON(btbase,value='open.bmp',/BITMAP,uname='open')
btshow=WIDGET_BUTTON(btbase,value='advanced.bmp',/BITMAP,uname='show')
;文本框
bttext=WIDGET_TEXT(btbase,XSIZE=70)
dbase=WIDGET_BASE(tlb,/row)
draw=WIDGET_DRAW(dbase,xsize=500,ysize=500)
;居中
DEVICE,GET_SCREEN_SIZE=screen_size;得到屏幕大小
result=WIDGET_INFO(tlb,/geometry);得到窗体的几何信息
;help,result
;计算窗体两边的偏移量
offset=[screen_size[0]-result.SCR_XSIZE,screen_size[1]-result.SCR_YSIZE]/2
;将得到的偏移量应用到应用程序
WIDGET_CONTROL,tlb,xoffset=offset[0],yoffset=offset[1],/realize
widget_control,draw,GET_VALUE=wind ;传递变量---结构体+指针
pstate={bttext:bttext,$
wind:wind, $
path:''}
ptr=PTR_NEW(pstate,/NO_COPY)
WIDGET_CONTROL,tlb,SET_UVALUE=ptr ;事件
Xmanager,'IDLGui',tlb ,/no_block;no_block----idl命令行失效,xmanager在最上面定义event
END
效果
IDL_GUI的更多相关文章
随机推荐
- [shell基础]——sed命令
关于sed sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓 ...
- js之基本包装类型
为了便于操作“基本类型值”,JS 提供了 三个 特殊的引用类型:Boolean.Number.String.这些类型和其他引用类型相似,但同时 也具备 与各自基本类型相应的特殊行为. 实际上:每当读取 ...
- linux入门基础_centos(二)--fdisk分区
课时10 使用fdisk进行磁盘管理 fdisk是来自IBM的老牌分区工具,支持绝大多数的操作系统,几乎所有的linux的发行版本都装有fdisk,包括在linux的rescu ...
- python代码风格指南:pep8 中文翻译
摘要 本文给出主Python版本标准库的编码约定.CPython的C代码风格参见PEP7.本文和PEP 257 文档字符串标准改编自Guido最初的<Python Style Guide&g ...
- Kibana4学习<二>
生产环境部署 Kibana4 是是一个完整的 web 应用.使用时,你需要做的只是打开浏览器,然后输入你运行 Kibana 的机器地址然后加上端口号.比如说:localhost:5601 或者 htt ...
- c++ ip地址相关
#include <stdio.h> #include <string.h> #include <arpa/inet.h> #include <sys/typ ...
- UVALive - 6571 It Can Be Arranged 最大流
题目链接: http://acm.hust.edu.cn/vjudge/problem/48415 It Can Be Arranged Time Limit: 3000MS 问题描述 Every y ...
- IIS和MVC
现象:MVC项目部署到IIS(7.5)后,浏览时只显示文件目录,不是网站 解决办法 1.服务器安装程序对应的Framework版本 2.服务器安装程序对应的MVC版本 3.安装CGI和ISAPI扩展: ...
- 【BZOJ】【1492】【NOI207】货币兑换Cash
DP/CDQ分治 orz Hzwer copy了下他的代码……结果在while(j<top......)这一句中把一个括号的位置打错了……找了我一个多小时才找到TAT 很神奇……顺便贴下CDQ的 ...
- iOS Automation Test
google resource for KIF: http://www.oschina.net/translate/ios-ui-testing-with-kif