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.
Pythonista How do I open a URL stream?
-
when I copy that line in the code than i mm getting the error „‘MyWebView‘ object has noattribute wv“ in that line.
-
@cvp of course, you have to insert this line at the right place
self.wv = ui.WebView(frame=self.bounds) self.wv.frame = (10,10,400,400)
-
If i start the programm the controllboard (buttons for forward,backward...) opens but then gets covered by the webside. The image is as big sa i set it but the background is black and coveres the whole screen.
-
from scene import * import sound import random import math import webbrowser import ui A = Action class MyWebView(ui.View): def __init__(self, url): self.wv = ui.WebView(frame=self.bounds) self.wv.frame = (10,10,350,250) self.wv.load_url(url) self.add_subview(self.wv) self.present() class MyScene (Scene): def setup(self): self.buttonl = SpriteNode('iob:arrow_left_b_256') self.buttonl.position = (70, 150) self.buttonl.scale = 0.7 self.add_child(self.buttonl) self.buttonr = SpriteNode('iob:arrow_right_b_256') self.buttonr.position = (300, 150) self.buttonr.scale = 0.7 self.add_child(self.buttonr) self.buttonf = SpriteNode('iob:arrow_up_b_256') self.buttonf.position = (185, 300) self.buttonf.scale = 0.7 self.add_child(self.buttonf) self.buttonh = SpriteNode('iob:arrow_down_b_256') self.buttonh.position = (70, 400) self.buttonh.scale = 0.7 self.add_child(self.buttonh) self.buttons = SpriteNode('iob:close_circled_256') self.buttons.position = (310, 410) self.buttons.scale = 0.5 self.add_child(self.buttons) def did_change_size(self): pass def touch_began(self, touch): for touch in self.touches.values(): if touch.location in self.buttonl.bbox: webbrowser.open("http://192.168.1.160/links") print("links") if touch.location in self.buttonr.bbox: webbrowser.open("http://192.168.1.160/rechts") print("rechts") if touch.location in self.buttonf.bbox: webbrowser.open("http://192.168.1.160/forne") print("forne") if touch.location in self.buttons.bbox: webbrowser.open("http://192.168.1.160/stop") print("stop") if touch.location in self.buttonh.bbox: webbrowser.open("http://192.168.1.160/zuruck") print("zurück") def touch_moved(self, touch): pass def touch_ended(self, touch): webbrowser.open("http://192.168.1.160/stop") if __name__ == '__main__': run(MyScene(), show_fps=False) wv = MyWebView('https://forum.omz-software.com')
-
Does somebody know how to solve the problem that i mentioned before
-
@Simdvo , do not
present
the view, but use the view that scene already has as a basis:class MyWebView(ui.View): def __init__(self, url, scene): scene.view.add_subview(self) self.touch_enabled = False self.frame = scene.view.bounds self.wv = ui.WebView(flex='WH') self.wv.frame = (10,50,350,250) self.add_subview(self.wv) self.wv.load_url(url)
... and providing scene in the main:
if __name__ == '__main__': scene = MyScene() run(scene, show_fps=False) wv = MyWebView('https://forum.omz-software.com', scene)
I also moved the webview a bit to not cover the X, and made it touch-transparent, to facilitate closing the view.
As an aside, for future reference, this would have been easier to build all in the ui module, without scene.
-
Thank you, but when I try to run the code I getting the Error:
name 'MyScene' is not defined -
In preference, the scene look runnable. The size and position is editable.
-
Does anyone know how to solve my problem?
-
@Simdvo, my code was just replacements for the same parts in your code, not runnable as is.
-
@Simdvo, here’s the full code for your convenience:
from scene import * import sound import random import math import webbrowser import ui A = Action class MyWebView(ui.View): def __init__(self, url, scene): scene.view.add_subview(self) self.touch_enabled = False self.frame = scene.view.bounds self.wv = ui.WebView(flex='WH') self.wv.frame = (10,50,350,250) self.add_subview(self.wv) self.wv.load_url(url) class MyScene (Scene): def setup(self): self.buttonl = SpriteNode('iob:arrow_left_b_256') self.buttonl.position = (70, 150) self.buttonl.scale = 0.7 self.add_child(self.buttonl) self.buttonr = SpriteNode('iob:arrow_right_b_256') self.buttonr.position = (300, 150) self.buttonr.scale = 0.7 self.add_child(self.buttonr) self.buttonf = SpriteNode('iob:arrow_up_b_256') self.buttonf.position = (185, 300) self.buttonf.scale = 0.7 self.add_child(self.buttonf) self.buttonh = SpriteNode('iob:arrow_down_b_256') self.buttonh.position = (70, 400) self.buttonh.scale = 0.7 self.add_child(self.buttonh) self.buttons = SpriteNode('iob:close_circled_256') self.buttons.position = (310, 410) self.buttons.scale = 0.5 self.add_child(self.buttons) def did_change_size(self): pass def touch_began(self, touch): for touch in self.touches.values(): if touch.location in self.buttonl.bbox: webbrowser.open("http://192.168.1.160/links") print("links") if touch.location in self.buttonr.bbox: webbrowser.open("http://192.168.1.160/rechts") print("rechts") if touch.location in self.buttonf.bbox: webbrowser.open("http://192.168.1.160/forne") print("forne") if touch.location in self.buttons.bbox: webbrowser.open("http://192.168.1.160/stop") print("stop") if touch.location in self.buttonh.bbox: webbrowser.open("http://192.168.1.160/zuruck") print("zurück") def touch_moved(self, touch): pass def touch_ended(self, touch): webbrowser.open("http://192.168.1.160/stop") if __name__ == '__main__': scene = MyScene() run(scene, show_fps=False) wv = MyWebView('https://forum.omz-software.com', scene)
-
Thank you the code works perfectly. But I have one last question does someone know how to send values to an URL? (post)?
-
@Simdvo, do you need it for the movement commands or the camera stream?
-
Yes I want to try if it is faster than the way I'm using now.
-
@Simdvo something like
import json import requests payload1 = '...' payload2 = '...' payload3 = '...' url = 'https://......' # value1,value2,value3 are reserved words in the webhook service payload = {"value1" : payload1, "value2" : payload2, "value3" : payload3} headers = {'content-type': 'application/json'} print(json.dumps(payload)) post = requests.post(url, data=json.dumps(payload), headers=headers)
-
requests.post(url, data=json.dumps(payload), headers=headers)
requests.post(url, json=payload, headers=headers)
-