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?
-
I mm sorry could you send me a code for the wkwebview to? I don't realy unterstand how to use it from the link you send
-
@Simdvo First, did you try my code with the url of the camera?
WKWebView has the same principle of working but is newer.
Thus, please, try ui.WebView first, if it does not work, WKWebView will not too -
@Simdvo said:
I don't realy unterstand how to use it from the link you send
When you see a link pointing to GitHub, you have to download the code in your site-packages folder and then, this code can be imported like a standard code.
But anyway, in your case, this newer module is not really needed to test that you can (or not) access your camera in a WebView as you can in Safari.
-
The ui.webview funktioned. But it showed the webside in a new window that covered the whole screen. Is it possible that it is only a small window so that i can use the buttons for the movement at the same time?
-
@Simdvo, it is a view like any other, so you can set its
frame
(orx, y, width, height
) as you wish. -
@Simdvo, what is the car that you are driving this way? Does it have out-of-the-box support for Python?
-
It is based on a. Esp32 and reackts if a url is triggered. It is programmed with the arduino ide(C++).
-
What is the command to set the windows frame?
-
@Simdvo ex:
self.wv.frame = (10,10,400,400)
-
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)