我该如何在Kivy中创建超链接?

7

我该如何在Kivy中创建一个能够打开Web浏览器的链接?我试过在标签中直接放置网址,但当然不起作用。特别地,我希望它能够在安卓应用程序上正常工作,并允许用户点击它以打开到该链接的Web浏览器。

5个回答

9

使用webbrowser,它已经可以在桌面上使用了,而我们的iOS / Android工具链已经为其实现了后端。也就是说,使用它,在任何地方都可以正常工作:

import webbrowser
webbrowser.open("http://kivy.org/")

5
您需要使用ref标记使文本可以点击(有关详细信息,请参见标记文档),然后将其绑定到打开正确页面的Web浏览器功能的函数。在桌面上,您可以使用webbrowser模块,在Android上,您需要使用pyjnius调用Android的普通功能。有一个预先编写的示例,在这里

这是一个可能会加入plyer项目的内容,该项目将提供一种跨平台的方式,在任何支持的系统上使用单个Python接口打开正确的Web浏览器。但目前还没有添加。


1
WebBrowser调用在Android下也可以工作。您不需要为此做任何事情。 - Thorin Schiffer

4

现在我已经编写了完美的超链接代码...你只需要使用实例和函数,以下是代码:

#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()


0
#import necessary library
from tkinter import Button
import webbrowser
from kivy.uix.button import Button
from kivy.app import App 




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()

请导入App和Button。就像上面的代码一样,它会像对我一样对你起作用。 - nalwoga justine elizabeth

0

我知道这是一个旧帖子,但我花了很长时间才解决了这个问题,所以我想也许将来的某个人会受益。虽然还不完美,但我制作了一个超链接小部件。

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接