如何在kivy中创建超链接?

时间:2014-03-13 17:10:50

标签: python-2.7 hyperlink kivy

如何在Kivy中创建一个用于打开Web浏览器的链接?我试过把网址放在标签上,但当然这不起作用。我希望它专门用于Android应用程序,并允许用户单击它以打开该链接的Web浏览器。

4 个答案:

答案 0 :(得分:4)

您需要使用ref标记标记来查看文本(有关详细信息,请参阅markup documentation),然后将其绑定到在右侧页面打开Web浏览器的功能。在桌面上你可以使用webbrowser模块,在android上你要用pyjnius调用android的普通函数。有一个预先写好的例子,说明如何here

这可能会出现在plyer项目中,这将提供一种跨平台的方式,可以在任何支持的系统上使用单个python接口打开正确的Web浏览器。但它还没有添加。

答案 1 :(得分:3)

使用webbrowser,它已在桌面上运行,我们的iOS / Android工具链已实现了后端。即,使用它,它将无处不在:

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

答案 2 :(得分:1)

现在我为超级链接制作它的实现代码...你只需要使用insance和函数这里是代码:



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




答案 3 :(得分: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)