Python sl4a - 다양한 대화 상자 GUI 2
dialogCreateInput 함수를 이용해서 사용자에게 검색어를 입력 받고, 그것으로 구글 도서 검색 (http://books.google.com/) 을 검색한 결과를 이전 예제처럼 목록 대화 상자로 제시한다. 검색어를 입력받은 후에는 구글 검색 API를 이용해서 검색을 수행하고, 그결과로 얻은 책 제목들의 목록을 대화 상자로 제시한다.
service.ClientLogin(email, pw)
titles = []
for bookname in service.get_library():
titles.append(bookname.dc_title[0].text)
droid.dialogCreateAlert()
droid.dialogSetItems(list)
droid.dialogShow()
편의성의 대화 상자들
SL4A의 대화 상자 퍼사드에는 날짜 선택 상자(date picker) 등 편의성 UI 요소들을 위한 함수들이 여러개 있다.
droid.dialogShow()
dialogCreatDatePicker 의 첫 인수는 연도이다. 생략 가능한 둘째, 셋째 인수를 지정해서 월과 일도 지정할 수 있다.
사용자가 선택한 날짜는 dialogGetResponse로 알수 있다.
시간 선택 대화 상자(time picker)를 띄우는 createTimePicker 함수 이다.
다음에는 패스워드 입력에 특화된 함수인 dialogGetPassword를 보자. 이 함수를 호출하면 패스워드 입력 대화 상자가 바로 나타난다.
사용자가 입력한 패스워드 dialogGetPassword의 반환값에서 알 수 있다.
진행 표시 대화 상자
응용 프로그램이 현재 무엇을 하고 있는지를 사용자가 알게 하는 것은 항상 좋은 일이다. 응요프로그램이 몇 초 이상 걸릴 작업을 수행한다면 진행 표시 대화 상자(progress dialogbox)를 사용하는 것이 바람직하다. SL4A의 UI 퍼사드는 수평 진행 표시줄 대화 상자를 위한 함수들과 화전식 진행 표시 대화 상자를 위한 함수들을 제공한다. 이들을 사용할 때 가장 어려운 부분은 작업의 진척 정도를 계산해서 진행 표시 대화 상자를 갱신하는 것이다.
이 대화 상자를 위한 함수는 dialogCreateHorizontalProgress 이다. 이 함수를 아무 인수 없이 호출하면 진행 정도가 0에서 100까지인 수평 진행 표시 대화상자가 준비 된다.
droid.dialogShow()
일단 대화 상자를 띄운 다음 , dialogSetMaxProgress 함수로 진행 정도의 최댓값을 설정한다.
현재 진행 정도를 설정하는 함수는 dialogSetCurrentProgress이다.
모달 대화 상자 대 비 모달 대화 상자
사용자 인터페이스에 쓰이는 대화 상자들은 그 행동 방식에 따라 크게 모달(modal, 모드가 있는) 대화 상자와 비 모달(non-modal, 또는 modeless) 대화 상자로 나뉜다. 모달 대화 상자는 일반적으로 다른 어떤 프로세스나 창의 자식으로 생성된다. 즉, 돌아갈 부모 프로세스 또는 고수준 창이 존재한다. 모달 대화 상자의 가장 큰 특징은, 모달 대화 상자가 자신의 부모 요소에 대한 접근을 '차단' 한다는 것이다. 다른 말로 하면, 사용자가 부모 요소와 상호작용하려면 먼저 모달 대화 상자를 닫아야 한다. 경고 대화 상자들도 본직적으로 모달 대화 상자이다.
import android
droid = android.Android()
droid.dialogCreateAlert("나는 게임을 좋아합니다.","당신도 게임을 좋아하세요 ?")
droid.dialogSetPositiveButtonText("예")
droid.dialogNegativeButtonText("아니오")
droid.dialogShow()
droid.startLocating()
while True:
# 사건이 일어나길 최대 10초 까지 기다린다.
response=droid.eventWait(10000).result
if response==None:
#처리할 사건이 없음. 루프를 버ㅅ어난다.
break
if response["name"]=="dialog":
#대화 상자 사건의 경우에도 루프를 벗어난다.
break
print response # 위치 사건일 가능성이 있음.
#루프를 벗어난다. 이제 대화 상자를 닫느다.
droid.dialogDismiss()
if response==None:
print" 시간초과."
else:
rdialog=response["data"] # 사용자 응답은 data 요소에 들어 있다.
if rdialog.has_key("which"):
result=rdialog["which"]
if result=="positive":
print "예! 나도 좋아해요!"
else result=="negative":
print "아, 그러시구나"
else rdialog.has_key("canceled"): # yes, I know it's mispelled.
print "결정하지 못하셨군요?"
else:
print "Unknow response=", response
print droid.stopLocating()
print "마침"
'' 카테고리의 다른 글
Python sl4a - GUI를 위한 HTML 양식의 기초 (0) | 2012.06.29 |
---|---|
Python sl4a - HTML로 GUI의 기초 (0) | 2012.06.27 |
Python sl4a - 다양한 대화 상자 GUI 2 (0) | 2012.06.17 |
Python sl4a - 대화 상자 기반 GUI (0) | 2012.06.16 |
Python sl4a - 웹에서 파일 내려 받기 (0) | 2012.06.15 |
Python sl4a - HTTP 서버 (0) | 2012.06.14 |
댓글을 달아 주세요