如何给href一个方法名?

时间:2015-01-26 07:40:26

标签: python qt python-2.7 qt4 pyqt4

我有一个QTextBrowser()对象:

self.PAddressLink = QTextBrowser()

我需要点击此QTextBrowser上的链接,它应该打开一个新的对话框。

self.PAddressLink.setHtml("<html><body><a href=#>+Add Permanent Address</a></body></html>")

无论如何我可以用以下代码打开新窗口:

self.PAddressLink.anchorClicked.connect(self.AddPAddress) #self.AddPAddress is the method of displaying a dialog box.

但我需要知道是否可以在href中放置self.AddPAddress并避免使用以下额外语句:

self.PAddressLink.anchorClicked.connect(self.AddPAddress) #self.AddPAddress 

2 个答案:

答案 0 :(得分:2)

你可以(有点)以一种轻微的方式做到这一点。

基本上,您希望将链接视为按钮,并让每个链接调用不同的处理程序。因此,假设所有处理程序都在同一个对象上定义(例如self),您可以这样做:

    self.PAddressLink.setHtml("<a href="AddPAddress">...</a>")
    self.PAddressLink.anchorClicked.connect(self.handleLinkClicked)
    ...

    def handleLinkClicked(self, url):
        if url.host():
            # handle normal urls here if necessary...
        else:
            getattr(self, url.toString())()

或者只是:

        else:
            key = url.toString()
            if key == 'AddPAddress':
                # open dialog...
            elif key == 'SomethingElse':
                # do something else...

答案 1 :(得分:1)

很可能不是。至少没有任何简单的方法。您可能只是重新实现信号和插槽系统。

与按钮一样,您必须将点击信号连接到插槽。这就是它的工作方式。