python sl4a 中的文件对话框
File dialog in python sl4a
我正在 sl4a
中寻找一个简单的文件选择器对话框。我找到了一些本机对话框 here 但没有找到我要找的那个。
我希望我能通过找到现成的东西来节省时间。像 filename = fileopendialog()
这样的最小代码将是一个奖励。
有什么想法吗?
我决定自己写一个(见下文以供参考)。这可能会做得更好,欢迎提出任何建议。
import android, os, time
droid = android.Android()
# Specify root directory and make sure it exists.
base_dir = '/sdcard/sl4a/scripts/'
if not os.path.exists(base_dir): os.makedirs(base_dir)
def show_dir(path=base_dir):
"""Shows the contents of a directory in a list view."""
#The files and directories under "path"
nodes = os.listdir(path)
#Make a way to go up a level.
if path != base_dir:
nodes.insert(0, '..')
droid.dialogCreateAlert(os.path.basename(path).title())
droid.dialogSetItems(nodes)
droid.dialogShow()
#Get the selected file or directory .
result = droid.dialogGetResponse().result
droid.dialogDismiss()
if 'item' not in result:
return
target = nodes[result['item']]
target_path = os.path.join(path, target)
if target == '..': target_path = os.path.dirname(path)
#If a directory, show its contents .
if os.path.isdir(target_path):
show_dir(target_path)
#If an file display it.
else:
droid.dialogCreateAlert('Selected File','{}'.format(target_path))
droid.dialogSetPositiveButtonText('Ok')
droid.dialogShow()
droid.dialogGetResponse()
if __name__ == '__main__':
show_dir()
我正在 sl4a
中寻找一个简单的文件选择器对话框。我找到了一些本机对话框 here 但没有找到我要找的那个。
我希望我能通过找到现成的东西来节省时间。像 filename = fileopendialog()
这样的最小代码将是一个奖励。
有什么想法吗?
我决定自己写一个(见下文以供参考)。这可能会做得更好,欢迎提出任何建议。
import android, os, time
droid = android.Android()
# Specify root directory and make sure it exists.
base_dir = '/sdcard/sl4a/scripts/'
if not os.path.exists(base_dir): os.makedirs(base_dir)
def show_dir(path=base_dir):
"""Shows the contents of a directory in a list view."""
#The files and directories under "path"
nodes = os.listdir(path)
#Make a way to go up a level.
if path != base_dir:
nodes.insert(0, '..')
droid.dialogCreateAlert(os.path.basename(path).title())
droid.dialogSetItems(nodes)
droid.dialogShow()
#Get the selected file or directory .
result = droid.dialogGetResponse().result
droid.dialogDismiss()
if 'item' not in result:
return
target = nodes[result['item']]
target_path = os.path.join(path, target)
if target == '..': target_path = os.path.dirname(path)
#If a directory, show its contents .
if os.path.isdir(target_path):
show_dir(target_path)
#If an file display it.
else:
droid.dialogCreateAlert('Selected File','{}'.format(target_path))
droid.dialogSetPositiveButtonText('Ok')
droid.dialogShow()
droid.dialogGetResponse()
if __name__ == '__main__':
show_dir()