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的更多相关文章
随机推荐
- 基于PBOC电子钱包的消费过程详解
智能卡金融行业应用电子钱包的消费交易流程,开发人员可参考 首先终端和卡片有一个共同的密钥叫做消费密钥:PurchKey (针对每种特定的交易,比如,圈存,消费,都有特定的密钥与之对应) 假设Purch ...
- 四则运算小程序测试--c++--软件工程课
一.测试内容: 1.生成题目数是否准确?2.打印方式(列数l.行间距jj)是否准确?3.有无乘除法cc是否准确?4.数的范围fw是否准确?5.除法有无余数c是否准确?6.加减有无负数f是否准确? 二. ...
- 阿里云服务器mysql修改编码问题
最近在学习struts+spring+hibernate,强烈推荐新手一本书:陈天河<轻量级web应用开发>,这本书是我见过的国内最好的书,初学者可以买本读读. 不说这个了,来说说我的问题 ...
- 【Binary Tree Level Order Traversal II 】cpp
题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from ...
- Netsharp快速入门(之2) 基础档案(之A 创建插件和资源)
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 第三章 基础档案开发 本文不再对此需求进行分析设计,其实分析设计的结果在下文会体现在平台的使用过程中,这个销售系统分成两个模 ...
- 【转载】Android异步处理系列文章
本博文地址:http://blog.csdn.net/mylzc/article/details/6777767 转载请注明出处. 为了给用户带来良好的交互体验,在Android应用的开发过程中需要把 ...
- C++ Templates之模板元编程
#ifndef POW3_H #define POW3_H template <int N> class Pow3 { public: enum{result = 3 * Pow3< ...
- 【BZOJ】【1911】【APIO2010】特别行动队commando
DP/斜率优化 嗯……第三道斜率优化的题目了. 定义 $s[i]=\sum_{k=1}^{i} x[k] $ 方程:$f[i]=max\{ f[j]+a*(s[i]-s[j])^2+b*(s[i]-s ...
- 剑指offer--面试题22
关键在于思路, 需要两个输入向量,而函数中需要一个辅助栈! 思路:以待判出栈序列为基础,逐个判断它与栈顶元素是否相等,相等则弹出且j++,这表明此元素可为出栈顺序元素,不相等则栈元素不断入栈,直至相 ...
- 7-Highcharts曲线图之分辨带
<!DOCTYPE> <html lang='en'> <head> <title>7-Highcharts曲线图之分辨带</title> ...
