如何在 kivy 中创建超链接?
Posted
技术标签:
【中文标题】如何在 kivy 中创建超链接?【英文标题】:How can I make a hyperlink in kivy? 【发布时间】:2014-04-18 14:53:39 【问题描述】:如何创建在 Kivy 中打开网络浏览器的链接?我试过将网址放在标签中,但这当然行不通。我希望它专门用于 android 应用程序,并允许用户单击它以打开 Web 浏览器到该链接。
【问题讨论】:
【参考方案1】:使用webbrowser,它已经在桌面上运行,我们的 ios / Android 工具链已经为它实现了一个后端。即,使用它,它可以在任何地方工作:
import webbrowser
webbrowser.open("http://kivy.org/")
【讨论】:
【参考方案2】:您需要使用ref
标记标记使文本可点击(有关详细信息,请参阅markup documentation),然后将其绑定到在右侧页面打开网络浏览器的函数。在桌面上你可以使用 webbrowser 模块,在 android 上你会想用 pyjnius 调用 android 的正常功能。有一个预先编写的示例说明如何做到这一点here。
这可能会出现在plyer 项目中,它将提供一种跨平台的方式,可以在任何受支持的系统上使用单个 python 界面打开正确的 Web 浏览器。不过还没有添加。
【讨论】:
webbrowser 调用也在 android 下工作。你不需要为此做任何事情【参考方案3】:现在我将它作为超链接的完美代码......你只需要使用实例和函数这里是代码:
#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()
【讨论】:
【参考方案4】:我知道这是一个旧线程,但我花了很长时间才解决这个问题,所以我想也许其他人可能会从中受益。它远非完美,但我制作了一个超链接小部件。
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)
【讨论】:
以上是关于如何在 kivy 中创建超链接?的主要内容,如果未能解决你的问题,请参考以下文章