【问题标题】:Qpython3 and androidhelper, droid.dialogSetSingleChoiceItemsQpython3和androidhelper,droid.dialogSetSingleChoiceItems
【发布时间】:2018-08-16 10:10:44
【问题描述】:

我正在尝试找出 androidhelper,我发现它对于使用 python 3 和 Android 非常有用。我正在尝试使用 dialogSetChoiceItems 从列表中返回一个选择。我已经设置好了,并且尝试了各种方法。我会返回一些东西,但它是列表的长度。任何帮助,将不胜感激。谢谢,

#-*-coding:utf8;-*-
#qpy:3 
#qpy:console
import androidhelper
droid = androidhelper.Android()

def test_alert_dialog_with_single_choice_list(Title, ListOfStuff):

  droid.dialogCreateAlert(Title)
  droid.dialogSetSingleChoiceItems(ListOfStuff)

  droid.dialogSetPositiveButtonText('Select')
  droid.dialogShow()
  response = droid.dialogGetSelectedItems().result
  return response





if __name__ == '__main__':

    Listy = [1,2,3,4,5,6,7,8]
    YTitle = 'Title of The Thing'

    FReturn = test_alert_dialog_with_single_choice_list(YTitle, Listy)

    print(FReturn)

【问题讨论】:

  • droid.dialogGetSelectedItems().result 应该返回所选项目的索引列表,文档here。你得到了什么?列表的长度?
  • 我得到了[0]的默认选择项。如果我更改 droid.dialogSetSingleChoiceItems(ListOfStuff, selected=None) 如果我更改 droid.dialogSetSingleChoiceItems(ListOfStuff, selected=3),它会返回 3。如果我从 response = droid.dialogGetSelectedItems() 中删除 .result,我会得到以下信息:结果(id=5,结果=[0],错误=无)。我无法从列表中获得任何回报。我尝试在函数中使用列表而不通过变量传递它,但没有任何效果。
  • 我不完全理解问题所在。您是否期望 droid.dialogGetSelectedItems().result 返回列表中的“选定项目”?不,它没有。它以列表的形式返回“选定项目的索引”。例如,如果你给它 items["a","b","c","d"],如果你选择了 "a",它将返回 [0],如果 "b",则返回 [1],[2 ] 如果“c”...这是问题吗?也许我会写一个示例代码作为答案。

标签: qpython


【解决方案1】:

这个例子用“xyz”按钮和“abcde”项目,然后print(pressed_button, selected_items_indexes)makeToast你按下的按钮和选定的项目创建一个对话框。试试吧!它在我的手机上运行良好,如果你的手机上没有,请告诉我。

#-*-coding:utf8;-*-
#qpy:2
#qpy:console
import androidhelper
droid=androidhelper.Android()
def mydialog(title,buttons=["OK"],items=[],multi=False):
    title = str(title)
    droid.dialogCreateAlert(title)
    if len(items) > 0:
        if multi:
            droid.dialogSetMultiChoiceItems(items)
        else:
            droid.dialogSetSingleChoiceItems(items)
    if len(buttons) >= 1:
        droid.dialogSetPositiveButtonText(buttons[0])
    if len(buttons) >= 2:
        droid.dialogSetNeutralButtonText(buttons[1])
    if len(buttons) >= 3:
        droid.dialogSetNegativeButtonText(buttons[2])
    droid.dialogShow()
    res0 = droid.dialogGetResponse().result
    res = droid.dialogGetSelectedItems().result
    if "which" in res0.keys():
        res0={"positive":0,"neutral":1,"negative":2}[res0["which"]]
    else:
        res0=-1
    return res0,res
items = [i for i in "abcde"]
btns = [i for i in "xyz"]
pressed_button, selected_items_indexes = mydialog("Dialog test!", btns, items, True)
print(pressed_button, selected_items_indexes)
if pressed_button == -1:
    droid.makeToast("You didn't press any buttons!")
else:
    droid.makeToast("You pressed %s!"%("xyz"[pressed_button]))
if selected_items_indexes == []:
    droid.makeToast("You selected nothing!")
else:
    selected_abc = "".join(["abcde"[i] for i in selected_items_indexes])
    droid.makeToast("You selected %s!"%selected_abc)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多