2011-09-11 21 views
10

Czy istnieją podstawowe funkcje GUI w SL4A? Chciałbym uruchomić program Pythona na Androida i potrzebowałbym listbox i prostych okien dialogowych (wyświetl informacje i uzyskaj dane wejściowe).Skrypty w języku Python: GUI?

Wygląda na to, że są to proste dialogi, ale nie znalazłem listy. Jeśli nie ma listbox, powinienem móc go utworzyć, jeśli istnieje możliwość pisania tekstu i zaznaczania prostokątów w określonych częściach ekranu oraz reagowania na dotykanie ekranu lub pisania przez użytkownika (w tym sprawdzanie, gdzie użytkownik dotknął lub gdzie kursor jest).

Odpowiedz

11

Zasadniczo istnieją trzy rzeczy, które możesz zrobić:

  1. Jeśli chcesz tylko prostych list i wejść Android, takich jak uzyskanie wejście użytkownika (na przykład nazwę użytkownika i hasło) lub pokazując listę opcji do wyboru, to istnieje kilka tutoriali tutaj: http://code.google.com/p/android-scripting/wiki/UiExamples

  2. Jeśli chcesz wyświetlić informacje (czyli nie mają użytkownikowi wybrać go), można spróbować pokazując HTML w WebView odpowiedzi poprzez wydarzenia: http://code.google.com/p/android-scripting/wiki/UsingWebView

    W ten sposób uzyskuje się ograniczoną funkcjonalność poprzez zdarzenia za pomocą droid.eventPost(eventName,eventData); w JavaScript i droid.eventWaitFor(eventName).result w Pythonie. Możesz wtedy robić, co chcesz, dzięki otrzymanym danym.

  3. Jeśli czujesz się odważny, najnowsza nieoficjalna wersja zawiera obsługę pełnych układów Androida (wykonanych w formacie XML, takich jak te w natywnej aplikacji dla systemu Android). Można znaleźć przewodnika do tego tutaj: http://code.google.com/p/android-scripting/wiki/FullScreenUI

10

Jeśli chcesz Pythona rozwiązanie GUI na Android/iOS/Linux/Windows/Mac można użyć kivy ... its nice! kivy.org

+1

podstawie przeglądania dokumentów, że wygląda świetnie! – foosion

+0

To jest miłe, ale nie ma w nim wielu repozytoriów dla Linuksa. – RobotHumans

3

szybki i mocny opcją jest użycie REBOL 3. Można korzystać z funkcji SL4a, ale nie trzeba do:

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

Oto 10 w pełni funkcjonalne programy demo, z GUI . Są one uruchamiane w systemach operacyjnych Android i OS, przy użyciu tego samego kodu, , dokładnie, bez jakichkolwiek zmian. Teeny małe skrypty, i martwe proste do stworzenia. Jest nic innego jak to:

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

Jeśli chcesz użyć lub dodać funkcje z SL4a do REBOL, zrób kod na https://raw.github.com/gchiu/Rebol3/master/protocols/prot-sl4a.r3