idl编程:用户界面的创建与事件响应

Antonia ·
更新时间:2024-11-13
· 535 次阅读

看着视频学习了一下午,终于把这个程序编写成功了,再此记录一下原代码,以后忘记时好查看。
功能:可以自主选择文件,打开尺寸较小的图片,然后显示在该界面上。
具体界面如下
在这里插入图片描述
代码如下:

pro test_DISPLAYimage_event,ev widget_control,ev.top,get_uvalue=pstate uname=widget_info(ev.id,/uname) case uname of 'open':begin file=dialog_pickfile(title='选择文件',$ filter=['*.bmp','*.jpg','*.tif'],$ path=(*pstate).curpath,$ get_path=curpath) if curpath ne '' then (*pstate).curpath=curpath if ~file_test(file) then return data=read_image(file) winid=(*pstate).winid wset,winid erase,255 tv,data,/true ;显示文件路径 widget_control,(*pstate).ttxt,set_value=file end else: endcase end pro test_DISPLAYimage ;主界面 tlb=widget_base(mbar=mbar,title='fxs',/column) ;菜单栏 wFile=widget_button(mbar,value='File') wOpen=widget_button(wFile,value='oPen') wExit=widget_button(wFile,value='exit') ;工具栏 tbbase=widget_base(tlb,/frame,/row) topen=widget_button(tbbase,value='open.bmp',$ /bitmap,uname='open') ttxt=widget_text(tbbase,value='',xsize=50) ;绘图区域 wdraw=widget_draw(tlb,xsize=1000,ysize=500) widget_control,tlb,/realize ;设置窗口到屏幕中间 device,get_screen_size=ss ;获取显示器大小 info=widget_info(tlb,/geometry) ;获取窗口大小 tlb_xy=[info.scr_xsize,info.scr_ysize] offset=[ss-tlb_xy]/2 widget_control,tlb,xoffset=offset[0],$ yoffset=offset[1] ; widget_control,wdraw,get_value=winid wset,winid device,decomposed=0 loadct,0 erase,255 pstate={WINID:winid,$ ttxt:ttxt, $ curpath:''} widget_control,tlb,set_uvalue=ptr_new(pstate) ;事件管理 XMANAGER,'test_DISPLAYimage',tlb,/no_block end
作者:遥感新人



idl 界面 事件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章