如何在 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 中创建超链接?的主要内容,如果未能解决你的问题,请参考以下文章

在Textview中创建超链接[重复]

在python中创建超链接

在具有空格的对象的 django 模板中创建超链接

通过绑定在TextBlock中创建超链接

如何在 Tkinter 中创建带有标签的超链接?

如何在jQGrid行中禁用超链接