Strange error with ui.webview
I'm making a simple application in Pythonista to display webpages, listed in a text file, inside of a webview. I have looked over the documentation and tried to Google this error, but I can't seem to find anything.
Here's my code:
# coding: utf-8 import ui import urllib2 import re v = ui.load_view() v.present('sheet') webview = ui.WebView def main(): fx = open('sites.txt', 'r') lines = fx.readlines() fx.close() link1 = re.split('/\n', lines) link1.pop() link2 = re.split('/\n', lines) link2.pop() link3 = re.split('/\n', lines) link3.pop() webview.load_url(link1) webview.present() main()
Here is a version of the error I get. Even when I supply a argument in the webview.load_url() method, it says it needs a URL instead of a string. So what I need to know is how to convert a list with one element into something that webview.load_url() will understand.
The main problem is that the value of
ui.WebViewclass, and not an instance of the class. You're missing parentheses there, it should be
webview = ui.WebView().
I don't know what the contents of your sites.txt file is exactly, and if the regex splitting is actually working as you expect. In any case,
link1will be a list of strings, and you need one string for
load_url, so it should be something like
webview.load_url(link1)(assuming the first item in the list is a URL).
# coding: utf-8 import ui import urllib2 import re v = ui.load_view() webview = ui.WebView() webview.flex = 'WH' v.add_subview(webview) v.present('full_screen') def main(): fx = open('sites.txt', 'r') lines = fx.readlines() fx.close() link1 = lines.strip() #link1 = re.split('/\n', lines) #link1.pop() #link2 = re.split('/\n', lines) #link2.pop() #link3 = re.split('/\n', lines) #link3.pop() webview.load_url(link1) #webview.present() #if you don't need a second view!? main()
@omz Thank you for the quick help. I figured it was some dumb mistake. :)
@brumm I edited my code to match what you added and it works somewhat, but for some reason the webview is doing this...
And it should look like this...
it's hard to guess which sheet size you have, but for e.g. you can set another size via
webview = ui.WebView(frame=(20,20,400,300))
More comfortable is to use the UI Designer (look for Auto-Resizing / Flex), but then you have to rewrite the source code.
v = ui.load_view() #webview = ui.WebView(frame=(20,20,400,300)) #webview.flex = 'WH' #v.add_subview(webview) v.present('sheet') webview = v['webview1']
@brumm Thanks that worked perfectly!