Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
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[0]) link1.pop() link2 = re.split('/\n', lines[1]) link2.pop() link3 = re.split('/\n', lines[2]) 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
webview
is theui.WebView
class, and not an instance of the class. You're missing parentheses there, it should bewebview = 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,
link1
will be a list of strings, and you need one string forload_url
, so it should be something likewebview.load_url(link1[0])
(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[0].strip() #link1 = re.split('/\n', lines[0]) #link1.pop() #link2 = re.split('/\n', lines[1]) #link2.pop() #link3 = re.split('/\n', lines[2]) #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...
-
Hi Croc,
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!