首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python应用程序框架在应用程序内部创建webview

Python应用程序框架在应用程序内部创建webview
EN

Stack Overflow用户
提问于 2021-03-28 23:25:01
回答 1查看 3.1K关注 0票数 3

我需要在我的kivy应用程序中嵌入一个webview,或者使用其他支持android和IOS的python应用程序框架。我也希望保存用于登录的cookie,这样用户就不必登录不止一次。这是可能的,还是我应该寻找另一种方法来实现这一点?谢谢您的回复!

EN

回答 1

Stack Overflow用户

发布于 2021-03-31 00:55:32

不幸的是,没有“通用”方法来做到这一点。然而,这仍然是可能的。不幸的是,也没有一种“原生”方法。

安卓:

对于android,您可以使用webview-android

代码语言:javascript
复制
from kivy.uix.widget import Widget
from kivymd.app import MDApp
from webview import WebView
from kivy.lang.builder import Builder
from kivymd.uix.button import MDFlatButton
from kivymd.uix.screen import MDScreen

Builder.load_string("""
<MyWebView>
    MDFlatButton:
        text: "Push"
        pos_hint: {"center_x": .5, "center_y": .4}
        on_press: root.Push()
""")

class MyWebView(MDScreen):
    def Push(self):
        WebView("https://www.google.com")


class MyWebApp(MDApp):
    def build(self):
        return MyWebView()


if __name__ == '__main__':
    MyWebApp().run()

此外,您还可以使用吉纽斯访问java类,这通常是这样做的:

代码语言:javascript
复制
import kivy                                                                                     
from kivy.app import App                                                                        
from kivy.lang import Builder                                                                   
from kivy.utils import platform                                                                 
from kivy.uix.widget import Widget                                                              
from kivy.clock import Clock                                                                    
from jnius import autoclass                                                                     
from android.runnable import run_on_ui_thread                                                   
                                                                                                
WebView = autoclass('android.webkit.WebView')                                                   
WebViewClient = autoclass('android.webkit.WebViewClient')                                       
activity = autoclass('org.kivy.android.PythonActivity').mActivity                              
                                                                                                
class Wv(Widget):                                                                               
    def __init__(self, **kwargs):                                                               
        super(Wv, self).__init__(**kwargs)                                                      
        Clock.schedule_once(self.create_webview, 0)                                             
                                                                                                
    @run_on_ui_thread                                                                           
    def create_webview(self, *args):                                                            
        webview = WebView(activity)                                                             
        webview.getSettings().setJavaScriptEnabled(True)                                        
        wvc = WebViewClient();                                                                  
        webview.setWebViewClient(wvc);                                                          
        activity.setContentView(webview)                                                        
        webview.loadUrl('http://www.google.com')
                                                                                                
class ServiceApp(App):                                                                          
    def build(self):                                                                            
        return Wv()                                                                             
                                                                                                
if __name__ == '__main__':                                                                      
    ServiceApp().run()

iOS

不幸的是,我没有一个iOS设备,所以我不能测试这些。

kivy-ios模块似乎包含实现此功能的方法:

代码语言:javascript
复制
import ios
url = "http://www.google.com"
ios.IOSWebView().open(url, width, height)

另一种解决方案是使用比奥布朱访问Objective类,这通常会在iOS上实现webview。我不想粘贴未经测试的代码,所以我建议您查看这个谷歌集团底部的Michael和Julez的答案。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66847097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档