【发布时间】:2014-04-18 14:53:39
【问题描述】:
如何创建在 Kivy 中打开网络浏览器的链接?我试过将网址放在标签中,但这当然行不通。我希望它专门用于 android 应用程序,并允许用户单击它以打开 Web 浏览器到该链接。
【问题讨论】:
标签: python-2.7 hyperlink kivy
如何创建在 Kivy 中打开网络浏览器的链接?我试过将网址放在标签中,但这当然行不通。我希望它专门用于 android 应用程序,并允许用户单击它以打开 Web 浏览器到该链接。
【问题讨论】:
标签: python-2.7 hyperlink kivy
使用webbrowser,它已经在桌面上运行,我们的 iOS / Android 工具链已经为它实现了一个后端。即,使用它,它可以在任何地方工作:
import webbrowser
webbrowser.open("http://kivy.org/")
【讨论】:
您需要使用ref 标记标记使文本可点击(有关详细信息,请参阅markup documentation),然后将其绑定到在右侧页面打开网络浏览器的函数。在桌面上你可以使用 webbrowser 模块,在 android 上你会想用 pyjnius 调用 android 的正常功能。有一个预先编写的示例说明如何做到这一点here。
这可能会出现在plyer 项目中,它将提供一种跨平台的方式,可以在任何受支持的系统上使用单个 python 界面打开正确的 Web 浏览器。不过还没有添加。
【讨论】:
现在我将它作为超链接的完美代码......你只需要使用实例和函数这里是代码:
#import necessary library
import webbrowser
def any_Function(instance):
webbrowser.open('http://www.anywebsite.domain')
class TutorialApp(App):
def build(self):
btn1 = Button(text='Open Link' , size=(200,50), size_hint=(None, None))
btn1.bind(on_press=any_Function)
#Bind function with button
return btn1
if __name__ == '__main__':
TutorialApp().run()
【讨论】:
我知道这是一个旧线程,但我花了很长时间才解决这个问题,所以我想也许其他人可能会从中受益。它远非完美,但我制作了一个超链接小部件。
from kivy.uix.label import Label
import webbrowser
"""A kivy widget that implements a hyperlink"""
class Hyperlink(Label):
def __init__(self, **kwargs):
self.target = kwargs.pop('target')
kwargs['markup'] = True
kwargs['color'] = (0,0,1,1)
kwargs['text'] = "[u][ref=link]{}[/ref][/u]".format(kwargs['text'])
kwargs['on_ref_press'] = self.link
super().__init__(**kwargs)
def link(self, *args):
webbrowser.open(self.target)
【讨论】: