私はこれを行うのに苦労しています。写真の表示ボタンを実行するたびに、アプリ自体ではなく、Python スクリプトだけが表示されます。
以下の Python スクリプトを実行しようとしています。
from os.path import join, dirname, exists
from pymt import *
current_dir = dirname(__file__)
fontname_title=join(current_dir,'fonts','7.ttf')
fontname_author_desc=join(current_dir,'fonts','author_desc.ttf')
css='''
.desktop-background,
.desktop-coverflow {
draw-background: 1;
bg-color: #000000;
}
.desktop-author,
.desktop-description {
color: #999999;
}
.desktop-title {
font-size: 60;
}
'''
css_add_sheet(css)
class Desktop(MTBoxLayout):
layout_def = '''
<MTBoxLayout orientation='"vertical"' cls='"desktop-background"'>
<MTCoverFlow size_hint='(1, .7)' cls='"desktop-coverflow"'
thumbnail_size='(256, 256)' cover_distance='150' id='"coverflow"'/>
<MTAnchorLayout size_hint='(1, .3)'>
<MTBoxLayout cls='"form"' padding='20' orientation='"vertical"'>
<MTLabel id='"title"' label='"Unknown Title"' autosize='True'
cls='"desktop-title"' anchor_x='"center"'/>
<MTLabel id='"author"' label='"Unknown Author"' autosize='True'
cls='"desktop-author"' anchor_x='"center"'/>
<MTLabel id='"description"' label='"Unknown Description"' autosize='True'
cls='"desktop-description"' anchor_x='"center"'/>
</MTBoxLayout>
</MTAnchorLayout>
</MTBoxLayout>
'''
def __init__(self, **kwargs):
super(Desktop, self).__init__(**kwargs)
self.xml = xml = XMLWidget(xml=Desktop.layout_def)
self.xml.autoconnect(self)
self.add_widget(self.xml.root)
self.coverflow = xml.getById('coverflow')
self.title = xml.getById('title')
self.author = xml.getById('author')
self.description = xml.getById('description')
self.title.font_name=fontname_title
self.author.font_name=fontname_author_desc
self.description.font_name=fontname_author_desc
self.populate()
def populate(self):
# search plugins
self.plugins = plugins = MTPlugins(plugin_paths=[
join(current_dir, 'app')])
plugins.search_plugins()
# populate the coverflow with plugin list
first_entry = None
for key in plugins.list():
plugin = plugins.get_plugin(key)
infos = plugins.get_infos(plugin)
icon = None
for icon_filename in ('icon-large.png', 'icon-large.jpg',
infos['icon'], 'icon.png'):
icon = join(infos['path'], icon_filename)
if exists(icon):
break
icon = None
# no icon ?
if icon is None:
print 'No icon found for', infos['title']
continue
# create an image button for every plugin
button = MTImageButton(filename=icon)
if first_entry is None:
first_entry = button
button.infos = infos
button.plugin = plugin
self.coverflow.add_widget(button)
# display first entry
if first_entry:
self.show_plugin(first_entry)
def on_coverflow_change(self, widget):
'''Called when the coverflow widget is changed
'''
self.show_plugin(widget)
def on_coverflow_select(self, widget):
'''Called when the coverflow widget have a selection
'''
plugin = widget.plugin
win = self.parent
self.plugins.activate(plugin, self.parent)
btn_close = MTImageButton(filename=join(current_dir,'icons','home.png'))
btn_close.connect('on_release', curry(
self.on_plugin_close, self.parent, plugin))
self.parent.add_widget(btn_close)
self.parent.remove_widget(self)
def on_plugin_close(self, win, plugin, *largs):
'''Called when the close button is hitted
'''
self.plugins.deactivate(plugin, win)
win.children.clear()
win.add_widget(self)
def show_plugin(self, widget):
'''Show information about a plugin in the container
'''
self.title.label = widget.infos['title']
self.author.label = widget.infos['author']
self.description.label = widget.infos['description']
if __name__ == '__main__':
runTouchApp(Desktop())`
下のボタンで
<html>
<div class="art-blockcontent">
<p style="text-align: center;"><img width="176" height="132" alt="" src="images/boat.jpg"></p>
<p style="text-align: center;">
<a href="Python\pictures\malacca.py" class="art-button">View Photo</a> <br></p></div>
</html>