2016-06-16 85 views
1

我創建了標籤:self.labelOnlineHelp = QLabel('<a href="http://example.com">Online Help</a>')並希望使其可點擊。理想情況下,它應該打開Firefox(但不是默認的瀏覽器),並將鼠標改爲指針(簡而言之:只是創建一個通常的超鏈接)。我發現qlabel沒有點擊事件。有沒有辦法以簡單的方式執行此操作?pyqt:爲Qlabel添加點擊事件

+0

你可以使用'QTextBrowser'元素並禁用它。它支持超鏈接,應該看起來像一個QLabel(也可以禁用該框架)。不過,我不知道打開一個非默認瀏覽器。 – Ian

+0

QLabel沒有點擊事件,但它有mousePressEvent和mouseReleaseEvent。也許你可以使用它們。 – okorkut

+0

@okorkut你能舉一個簡單的例子,我該如何使用這個事件。我需要信號/插槽嗎? – ascentman

回答

1

如果你想要做的事比默認的行爲(即在默認瀏覽器中打開鏈接)不同,您可以使用setOpenExternalLinks

self.labelOnlineHellp.setOpenExternalLinks(True) 

做到這一點,你可以連接到linkActivated信號,而不是(唐」如果您自己處理鏈接的打開,請使用setOpenExternalLinksTrue)。

self.labelOnlineHelp.linkActivated.connect(self.link_handler) 

def link_handler(self, link): 
    subprocess.call(['/path/to/firefox', link]) 
+0

謝謝。它幫助了很多:) – ascentman

1

您需要重新實現QLabel類並重寫mousePressEvent或mouseReleaseEvent。這裏有一個簡單的例子:

class MyLabel(QLabel): 
    def __init__(self, parent): 
     QLabel.__init__(self, parent) 
     self.link = "http://www.example.com" 

    def mousePressEvent(self, event): 
     # open the link on your browser 
     webbrowser.get('firefox').open_new_tab(self.link)