2011-09-11 38 views
10

Có các chức năng GUI cơ bản nào trong SL4A không? Tôi muốn chạy một chương trình python trên Android và sẽ cần một hộp danh sách và các hộp thoại đơn giản (hiển thị thông tin và nhận đầu vào).script python android: GUI?

Dường như có các hộp thoại đơn giản, nhưng tôi chưa tìm thấy hộp danh sách. Nếu không có hộp danh sách, tôi có thể tạo danh sách nếu có khả năng viết văn bản và đánh dấu hình chữ nhật vào các phần được chỉ định của màn hình và phản ứng với người dùng chạm vào màn hình hoặc nhập (bao gồm biết người dùng chạm vào đâu hoặc ở đâu con trỏ là).

Trả lời

11

Về cơ bản có ba điều bạn có thể làm:

  1. Nếu bạn chỉ muốn liệt kê Android đơn giản và nguyên liệu đầu vào, chẳng hạn như nhận đầu vào của người dùng (ví dụ, một tên người dùng và mật khẩu) hoặc hiển thị một danh sách các tùy chọn để lựa chọn, sau đó có một số hướng dẫn ở đây: http://code.google.com/p/android-scripting/wiki/UiExamples

  2. Nếu bạn muốn hiển thị thông tin (ví dụ, không có người sử dụng chọn nó), bạn có thể thử cho thấy HTML trong một WebView và đáp ứng thông qua các sự kiện: http://code.google.com/p/android-scripting/wiki/UsingWebView

    Thực hiện việc này, bạn nhận được chức năng giới hạn qua các sự kiện bằng cách sử dụng droid.eventPost(eventName,eventData); bằng JavaScript và droid.eventWaitFor(eventName).result bằng Python. Sau đó bạn có thể làm bất cứ điều gì bạn muốn với dữ liệu nhận được.

  3. Nếu bạn cảm thấy can đảm, bản phát hành không chính thức mới nhất chứa hỗ trợ cho bố cục Android đầy đủ (được tạo bằng XML, như được tìm thấy trong ứng dụng Android gốc). Bạn có thể tìm thấy một hướng dẫn cho rằng ở đây: http://code.google.com/p/android-scripting/wiki/FullScreenUI

10

Nếu bạn muốn có một giải pháp GUI python trên Android/iOS/Linux/Windows/Mac, bạn có thể sử dụng kivy ... tốt đẹp của nó! kivy.org

+1

Dựa trên trình duyệt văn bản, trông tuyệt vời! – foosion

+0

Thật tuyệt, nhưng nó không nằm trong nhiều bản repos cho Linux. – RobotHumans

3

Một lựa chọn nhanh chóng và mạnh mẽ là sử dụng REBOL 3. Bạn có thể sử dụng tính năng SL4A, nhưng bạn không cần phải:

http://business-programming.com/business_programming.html#section-18

Dưới đây là 10 chương trình demo đầy đủ chức năng, với giao diện đồ họa . Các quảng cáo này chạy trên hệ điều hành Android VÀ HĐH trên máy tính để bàn, sử dụng mã số chính xác, mà không cần bất kỳ thay đổi nào. Kịch bản nhỏ xíu, và chết đơn giản để tạo ra. Có khác như nó:

REBOL [] 
load-gui 
view [text "Hello World!"] 


REBOL [title: "Tiny Note Editor"] 
do %r3-gui.r3 ; download this file manually or just use load-gui as above 
view [ 
    a1: area 
    button "Save" on-action [write %notes.txt get-face a1] 
    button "Load" on-action [set-face a1 to-string read %notes.txt] 
] 


REBOL [title: "Data Entry to CSV File"] 
do %r3-gui.r3 
view [ 
    text "First Name:" 
    f1: field 
    text "Last Name:" 
    f2: field 
    button "Submit" on-action [ 
     write/append %cntcts.txt rejoin [ 
      mold get-face f1 " " mold get-face f2 newline 
     ] 
     request "" "Saved" 
    ] 
    a1: area 
    button "Load" on-action [set-face a1 to-string read %cntcts.txt] 
] 


REBOL [title: "Text File Reader (How to use a text list file selector)"] 
do %r3-gui.r3 
view [ 
    a1: area 
    button "Load" on-action [ 
     files: read %./ 
     view/modal [ 
      text "File Name:" 
      t2: text-list files on-action [ 
       set-face a1 to-string read(to-file pick files get-face t2) 
       unview 
      ] 
     ] 
    ] 
] 


REBOL [title: "List-View (Grid) Example"] 
do %r3-gui.r3 
view [ 
    text-table ["1" 200 "2" 100 "3"][ 
     ["asdf" "a" "4"] 
     ["sdfg" "b" "3"] 
     ["dfgh" "c" "2"] 
     ["fghj" "d" "1"] 
    ] 
] 


REBOL [title: "Calculator"] 
do %r3-gui.r3 
stylize [ 
    btn: button [ 
     facets: [init-size: 50x50] 
     actors: [on-action:[set-face f join get-face f get-face face]] 
    ] 
] 
view [ 
    hgroup [ 
     f: field return 
     btn "1" btn "2" btn "3" btn " + " return 
     btn "4" btn "5" btn "6" btn " - " return 
     btn "7" btn "8" btn "9" btn " * " return 
     btn "0" btn "." btn "/" btn "=" on-action [ 
      attempt [set-face f form do get-face f] 
     ] 
    ] 
] 


REBOL [title: "Sliding Tile Puzzle"] 
do %r3-gui.r3 
stylize [ 
    p: button [ 
     facets: [init-size: 60x60 max-size: 60x60] 
     actors: [ 
      on-action: [ 
       t: face/gob/offset 
       face/gob/offset: x/gob/offset 
       x/gob/offset: t 
      ] 
     ] 
    ] 
] 
view/options [ 
    hgroup [ 
     p "8" p "7" p "6" return 
     p "5" p "4" p "3" return 
     p "2" p "1" x: box 60x60 white 
    ] 
] [bg-color: white] 


REBOL [title: "Math Test"] 
do %r3-gui.r3 
random/seed now 
x: does [rejoin [random 10 " + " random 20]] 
view [ 
    f1: field (x) 
    text "Answer:" 
    f2: field on-action [ 
     either (get-face f2) = (form do get-face f1) [ 
      request "Yes!" "Yes!"][request "No!" "No!" 
     ] 
     set-face f1 x 
     set-face f2 "" 
     focus f2 
    ] 
] 


REBOL [title: "Minimal Cash Register"] 
do %r3-gui.r3 
stylize [fld: field [init-size: 80]] 
view [ 
    hgroup [ 
     text "Cashier:" cashier: fld 
     text "Item:"  item: fld 
     text "Price:"  price: fld on-action [ 
      if error? try [to-money get-face price] [ 
       request "Error" "Price error" 
       return none 
      ] 
      set-face a rejoin [ 
       get-face a mold get-face item tab get-face price newline 
      ] 
      set-face item copy "" set-face price copy "" 
      sum: 0 
      foreach [item price] load get-face a [ 
       sum: sum + to-money price 
      ] 
      set-face subtotal form sum 
      set-face tax form sum * .06 
      set-face total form sum * 1.06 
      focus item 
     ] 
     return 
     a: area 600x300 
     return 
     text "Subtotal:" subtotal: fld 
     text "Tax:"  tax: fld 
     text "Total:"  total: fld 
     button "Save" on-action [ 
      items: replace/all (mold load get-face a) newline " " 
      write/append %sales.txt rejoin [ 
       items newline get-face cashier newline now/date newline 
      ] 
      set-face item copy "" set-face price copy "" 
      set-face a copy "" set-face subtotal copy "" 
      set-face tax copy "" set-face total copy "" 
     ] 
    ] 
] 


REBOL [title: "Requestors"] 
do %r3-gui.r3 
x: request/ask "Question" "Do you like this?." 
either x = false [print "No!"] [print "Yes!"] 
x: request/custom "" "Do you like this?" ["Yay" "Boo"] 
either x = false [print "Boo!"] [print "Yay!"] 
view [button "Click me" on-action[request "Ok" "You clicked the button."]] 

Nếu bạn muốn sử dụng hoặc thêm tính năng từ SL4A để REBOL, chỉ cần làm mã tại https://raw.github.com/gchiu/Rebol3/master/protocols/prot-sl4a.r3