Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为href指定方法名称?_Python_Qt_Python 2.7_Qt4_Pyqt4 - Fatal编程技术网

Python 如何为href指定方法名称?

Python 如何为href指定方法名称?,python,qt,python-2.7,qt4,pyqt4,Python,Qt,Python 2.7,Qt4,Pyqt4,我有一个QTextBrowser()对象: 我需要单击放置在此QTextBrowser上的链接,它将打开一个新对话框 self.PAddressLink.setHtml("<html><body><a href=#>+Add Permanent Address</a></body></html>") 但我需要知道是否可以将self.AddPAddress放在href中,并避免使用以下额外语句: self.PAddressL

我有一个QTextBrowser()对象:

我需要单击放置在此QTextBrowser上的链接,它将打开一个新对话框

self.PAddressLink.setHtml("<html><body><a href=#>+Add Permanent Address</a></body></html>")
但我需要知道是否可以将self.AddPAddress放在href中,并避免使用以下额外语句:

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

很可能不是。至少这不是一个简单的方法。你很可能只是在重新实现信号和插槽系统

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

你可以(某种程度上)用一种略显粗糙的方式来做这件事

本质上,您希望将链接视为按钮,并让每个链接调用不同的处理程序。因此,假设所有处理程序都定义在同一个对象上(例如,
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())()

如果我需要在一个QTextBrowser中使用多个链接,那么我将不得不使用多个QTextBrowser呢?anchorClicked信号将url传递到插槽,因此您可以使
self.AddPAddress
以不同的方式处理url。
self.PAddressLink.anchorClicked.connect(self.AddPAddress) #self.AddPAddress 
    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...