DaKSiDE Group - Technologies for life ...

http://00.myvnc.com

Python & Python S60 (PyS60) Programming for Absolute Dummies | LESSON 6 Part 3

,

Các hàm của appuifw: Hàm popup_menu(), selection_list() và multi_selection_list()


4. popup_menu()

Đây là một hàm để gọi ra một cửa sổ popup menu, hiện ra các lựa chọn (và có thể cả câu hỏi) Giá trị trả về của người dùng sẽ lưu vào một biến số.

Để có thể làm được điều này, trước hết, bạn cần tạo ra một mảng chứa các câu lựa chọn. Để có thể làm được điều này, các bạn làm như sau: <xem thêm mục 2, bài 4, phần for... in... trong bài Structure Programming>
	<tên mảng> = [<phần tử 1>,<phần tử 2>,...<phần tử n>]

VD:
 cacluachon = [u”Con ga”, u”Con vit”, u”Con ngan”]


Sau khi đã tạo ra được một mảng các phần tử, ta đã có thể cho hiển thị một popup menu dùng hàm popup_menu(). Cấu trúc của hàm như sau:
	<biến> = popup_menu(<mảng ds lựa chọn>, <tiêu đề (nếu có)>)

Sử dụng luôn ví dụ về tạo mảng lựa chọn ở trên, mình có một ví dụ sau:
	from appuifw import *

	giacam = [u”Con ga”, u”Con vit”, u”Con ngan”]
	luachon = popup_menu(giacam, u”Ban thich an thit con nao nhat?”)
	if luachon == 0 #Con ga
	    note(u”Ga dang co dich cum H5N1 day!”, “info”)
	elif luachon == 1 #Con vit
	    note(u”An vit cung ngon, nhung het mua vit roi.”, “info”)
	else #Con ngan
	    note(u”OK! Chung ta di an ngan nhe!”, “info”)

Ví dụ trên có lẽ hơi bạo lực đối với những người yêu thích gia cầm. Nhưng ở trên chỉ là ví dụ thôi đấy, còn hiện tại gia cầm nói chung đang bị H5N1, cho nên tốt nhất là không ăn.

Tốt lắm, nếu các bạn đã làm thành thạo cái này, thì cái tiếp theo sẽ chẳng là gì cả.


5. selection_list()

Hàm này, nói một cách nào đó, thì giống hệt hàm popup_menu() ở trên, tuy nhiên, thay vì nó ”pop” một phát vào giữa mặt một cách rất bất lịch sự, thì hàm selection_list() ở đây lịch sự hơn rất nhiều. Nó hiển thị một danh sách cho mình có quyền lựa chọn một trong những thứ được liệt kê ra ở đó. Cách sử dụng không có gì khác cả. Đầu tiên, bạn cũng phải tạo ra một list là một mảng chứa những phần tử để lựa chọn. Sau đó bạn gọi các lựa chọn đó ra bằng hàm selection_list() với cú pháp như sau:
	<biến> = selection_list(<mảng ds lựa chọn>, search_field=<0 hoặc 1>)

Có thể nói là hoàn toàn giống hệt popup_menu(), ngoại trừ 2 điểm khác biệt nho nhỏ. Một là không có tiêu đề, vì danh sách lựa chọn này hiển thị hết màn hình, nên không có chỗ cho cái câu hỏi nữa (Hãy nhớ hỏi han cẩn thận trước khi hiển thị cái selectionlist này, vì đến lúc đó là không hỏi han gì được nữa đâu.) Hai là cái search_field. Rất đơn giản, nếu đặt cái này bằng 1, khi đó phía dưới list của bạn có một ô textbox để bạn type vào, giúp bạn search một cách dễ dàng hơn. (Tương tự cái Contact vậy) Còn nếu đặt bằng 0 thì sẽ không xuất hiện cái panel đấy.

Phần này không phải là quá khó khăn, cho nên mình sẽ không đưa ra ví dụ. Sao bạn không thử làm 1 ví dụ nho nhỏ tương đương cái popup_menu() ở trên nhỉ?


6. multi_selection_list()

Hàm multi_selection_list() xét một cách cơ bản là giống hàm selection_list(), duy chỉ có một điểm khác biệt là hàm này cho phép người dùng chọn nhiều lựa chọn hơn là chỉ một lựa chọn như selection_list(). Hàm trả về giá trị là một mảng chứa các index của các lựa chọn mà bạn đã chọn. Sau đó bạn chỉ việc thao tác với hàm giá trị trả về này thôi.

Cấu trúc của hàm này, không khác mấy so với selection_list(), như sau:
	<biến mảng> = multi_selection_list(<mảng ds lựa chọn>, style=<”checkbox” hoặc “checkmark”>, search_field=<0 hoặc 1>)

Cũng giống selection_list đúng không? Duy chỉ có cái style là không hiểu từ đâu sinh ra mà thôi. Không phải quá phức tạp, đây là cái để cho phép người dùng có thể chọn được nhiều phần tử. style có thể được gán một trong hai giá trị:

- style=”checkbox”: Cho phép người dùng chọn nhiều phần tử bằng phím OK, sau khi chọn được các phần tử theo ý muốn thì nhấn phím mềm bên trái để kết thúc. Kiểu chọn nhiều phần tử này tương tự với lúc chọn người trong danh bạ để gửi tin nhắn cho nhiều người.
- style=”checkmark”: Cho phép người dùng chọn nhiều phần tử bằng phím hình cây bút, sau khi chọn được các phần tử theo ý muốn có thể nhấn phím OK hoặc phím mềm bên trái để kết thúc. Kiểu chọn này tương tự với kiểu chọn nhiều lá thư một lúc ở trong Inbox của Messaging.

Mình sẽ làm một cái ví dụ tương tự như trên để các bạn hình dung rõ hơn:
	from appuifw import *

	giacam = [u”Con ga”, u”Con vit”, u”Con ngan”]
	luachon = multi_selection_list(giacam, style=”checkbox”, search_field=1)

	for i in luachon:
	    note(u”Ban thich an con “ + giacam[luachon], “info”)	

Bạn hãy về thử chạy và nghiên cứu nhé. Nếu bạn viết đúng như chương trình ở trên, thì trên màn hình sẽ hiền thị những thứ gia cầm mà bạn thích ăn. p Nghe ngon nhỉ?

Hãy thử thay style=”checkbox” ở trên thành style=”checkmark” rồi so sánh giữa hai cái để chọn ra cái nào thích hợp nhất cho chương trình của bạn.

OK! Thế là cuối cùng, sau một bài dài và vất vả, cuối cùng chúng ta cũng đã chiến đấu xong cái hàm appuifw. Chúng ta còn rất nhiều hàm ở phía trước, nhưng tạm thời mình chưa cần quan tâm đến. Chúng ta sẽ nghiên cứu dần dần hết những hàm thông dụng. Trước mắt chúng ta sẽ cùng nhay quay về với ngôn ngữ lập trình Python, học những cái cao siêu hơn nữa, để sau đó có thể làm được những cái cao siêu hơn nữa. Khi đấy chúng ta sẽ quay lại với cái di động yêu quý của mình, nhé!



Python & Python S60 (PyS60) Programming for Absolute Dummies | Phương thức lập trình PythonCó kẻ theo vợ bỏ anh em :D

Comments

Pham Van Taithansau741 Saturday, February 6, 2010 2:42:12 PM

Hic
Ko biết bây giờ bạn còn thường xuyên ghe qua trang WEB náy ko
Nếu vô tình hôm nào dó dc duoc nhưng tin nhăn này thì làm ơn cho mình hỏi với:
MÌNH ĐANG TÌM 1 PHẦN MỀM GIẢ LẬP ĐỀ CHẠY PYTHON TRÊN S60...
TÌM HOÀI RỦI NHƯNG VẪN KO THẤY DÂU CÀ? BẠN CÓ KINH NGHIỆM TRONG LẬP TRÌNH NẾU CÓ THÌ CHO MÌNH LINK NHÉ.
CẢM ƠN BẠN RÂT NHIỀU...
HY VONG SẼ NHẬN DC HỒI ÂM SỚM

Trịnh Thành TrungTnTonly Monday, April 26, 2010 3:43:00 AM

Chắc bạn không để ý. Mình có trình bày về vấn đề này ở bài trước đó
http://my.opera.com/noname00/blog/python-s60-programming-for-absolute-dummies-lesson-5-part-1

Bạn có thể vào trang của pys60

Mình muốn nhắc bạn là Python S60 là native Python cho di động, không phải là phần mềm giả lập để chạy Python. Và Python cho di động với Python về lý thuyết là khác nhau khá nhiều.

Nếu bạn muốn thử xem chương trình của mình sẽ chạy thế nào trên điện thoại, tốt nhất là bạn nên kết nối qua bluetooth như mình đã trình bày trong bài sau đó
http://my.opera.com/noname00/blog/python-s60-programming-for-absolute-dummies-lesson-5-part

Cảm ơn bạn đã quan tâm và xin lỗi đã reply muộn ^^

Write a comment

New comments have been disabled for this post.