android python脚本:GUI?

android python脚本:GUI?,android,python,ase,sl4a,Android,Python,Ase,Sl4a,SL4A中是否有基本的GUI功能?我想在Android上运行python程序,需要一个列表框和简单的对话框(显示信息和获取输入) 似乎有简单的对话框,但我还没有找到列表框。如果没有列表框,我应该能够创建一个列表框,如果能够将文本和高亮显示到屏幕的指定部分,并对用户触摸屏幕或键入做出反应(包括知道用户触摸的位置或光标所在的位置)。基本上,您可以做三件事: 如果您只需要简单的Android列表和输入,例如获取用户输入(例如用户名和密码)或显示可供选择的选项列表,那么这里有一些教程: 如果要显示信息(

SL4A中是否有基本的GUI功能?我想在Android上运行python程序,需要一个列表框和简单的对话框(显示信息和获取输入)


似乎有简单的对话框,但我还没有找到列表框。如果没有列表框,我应该能够创建一个列表框,如果能够将文本和高亮显示到屏幕的指定部分,并对用户触摸屏幕或键入做出反应(包括知道用户触摸的位置或光标所在的位置)。

基本上,您可以做三件事:

  • 如果您只需要简单的Android列表和输入,例如获取用户输入(例如用户名和密码)或显示可供选择的选项列表,那么这里有一些教程:

  • 如果要显示信息(即,不让用户选择),可以尝试在WebView中显示HTML并通过事件响应:

    通过使用
    droid.eventPost(eventName,eventData),可以通过事件获得有限的功能和Python中的
    droid.eventWaitFor(eventName.result
    。然后,您可以对接收到的数据执行任何操作

  • 如果你觉得很勇敢,最新的非官方版本包含了对完整Android布局的支持(这些布局是用XML制作的,就像在原生Android应用程序中找到的那样)。您可以在此处找到这方面的指南:


  • 如果你想在Android/iOS/Linux/Windows/Mac上使用python GUI解决方案,你可以使用kivy。。。太好了!

    一个快速而强大的选择是使用REBOL 3。您可以使用SL4a功能,但不需要:

    这里有10个功能齐全的演示程序,带有GUI。它们运行在Android和桌面OSs上,使用完全相同的代码,没有任何更改。非常小的脚本,创建起来非常简单。再没有比这更好的了:

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

    如果您想使用或添加SL4a到REBOL的功能,只需在浏览文档的基础上执行

    中的代码,看起来很棒!