1

I'm having a hard time doing this. Every time when i run the view photo button all it shows is the python script and not the apps itself.

I'm trying to run the Python script below:

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())` 

With the button below

<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;">&nbsp; <a href="Python\pictures\malacca.py" class="art-button">View Photo</a>&nbsp;<br></p></div> </html> 

1 Answer 1

3

Since you have backslashes in your URL to your python file I'm going to take a guess as to what you're doing wrong.

Python won't run in your web browser. So if you're loading the HTML file straight off your hard drive (i.e. using a file:// URL) then the browser will just show your source code.

You need to set up a web server to run the python. How you get the server to run the python code depends on the server. And you'll probably want to re-write your python code. It appears to be written to the CGI standard which has been effectively abandoned for many years. CGI runs a program each time a page is requested with the HTML being "printed" -- because it launches a new process each time it is painfully slow. Modern systems load the code once and then call a method in your code every time a page is requested, with the method returning the HTML, or more generally a "response object" which contains the HTML and metadata.

I'd recommend checking out Flask or cherrypy as easy places to start.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.