2011-09-11 15 views
10

¿Hay funciones básicas de GUI en SL4A? Me gustaría ejecutar un programa de Python en Android y necesitaría un cuadro de lista y diálogos simples (mostrar información y obtener información).android python scripting: GUI?

Parece que hay diálogos simples, pero no he encontrado un cuadro de lista. Si no hay un cuadro de lista, debería poder crear uno si existe la posibilidad de escribir texto y resaltar rectángulos en partes específicas de la pantalla y reaccionar cuando el usuario toca la pantalla o escribe (incluso saber dónde tocó el usuario o dónde el cursor es).

Respuesta

11

En esencia, hay tres cosas que puede hacer:

  1. Si lo que desea listas e insumos Android simples, tales como conseguir la entrada de un usuario (por ejemplo, un nombre de usuario y contraseña) o mostrar una lista de opciones para elegir, entonces hay algunos tutoriales aquí: http://code.google.com/p/android-scripting/wiki/UiExamples

  2. Si quieren mostrar información (es decir, no tiene el usuario seleccionarla), podría intentar mostrar HTML en un WebView y responder a través de eventos: http://code.google.com/p/android-scripting/wiki/UsingWebView

    Al hacer esto, obtienes funcionalidad limitada a través de eventos usando droid.eventPost(eventName,eventData); en JavaScript y droid.eventWaitFor(eventName).result en Python. A continuación, puede hacer lo que quiera con los datos recibidos.

  3. Si se siente valiente, la última versión no oficial contiene compatibilidad con diseños completos de Android (hechos en XML, como los que se encuentran en una aplicación nativa de Android). Se puede encontrar una guía para los que aquí: http://code.google.com/p/android-scripting/wiki/FullScreenUI

10

Si desea una solución GUI pitón en Android/iOS/Linux/Windows/Mac puede utilizar Kivy ... su agradable! kivy.org

+1

Sobre la base de los documentos de la navegación, que se ve muy bien! – foosion

+0

Es bueno, pero no está en muchos repositorios para Linux. – RobotHumans

3

Una opción rápida y poderosa es utilizar REBOL 3. Puede utilizar las funciones SL4A, pero usted no necesita:

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

Aquí hay 10 programas de demostración totalmente funcionales, con interfaces gráficas de usuario . Se ejecutan en sistemas operativos Android y de escritorio, utilizando el mismo código mismo, sin ningún cambio. Pequeñas secuencias de comandos pequeñas, y simples para crear. No hay nada que se le parezca:

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."]] 

Si desea utilizar o agregar funciones de SL4A a REBOL, acaba de hacer el código en https://raw.github.com/gchiu/Rebol3/master/protocols/prot-sl4a.r3