상황을 잘 모르겠습니다만, 아래와 같이 간단한 예제에서는 잘 작동합니다. 분명히 이보다는 훨씬 복잡한 프로그램을 만들고 계실 것으로 예상합니다만, GUI 버튼을 통해 Dialog_pickfile을 호출하는 것은 가능합니다.
pro test_dipifi_event, event
widget_control, event.top, GET_UVALUE=state
widget_control, event.id, GET_UVALUE=uval
case uval of
‘exit’ : widget_control, event.top, /DESTROY
‘DPF’ : begin
file=dialog_pickfile()
state.filename=file
widget_control, event.top, SET_UVALUE=state
end
‘check’ : print, state.filename
else :
endcase
end
pro test_dipifi
tlb=widget_base(/COLUMN)
btn1=widget_button(tlb, value=’Select File’, UVALUE=’DPF’)
btn2=widget_button(tlb, value=’Check selected’, UVALUE=’check’)
btn3=widget_button(tlb, value=’Exit’, UVALUE=’exit’)
state={filename:’Default’}
widget_control, tlb, SET_UVALUE=state
widget_control, tlb, /REALIZE
xmanager, ‘test_dipifi’, tlb
end