iT邦幫忙

1

PyQt5 QLabel 加上 QImage 後 enterEvent 失效

  • 分享至 

  • xImage

各位大神好!弱弱的我自修 PyQt5 遇到問題,懇請各位大神來解答,以下是程式碼:

label = QLabel (form)
img = QImage (Jpg)
label.setMask (QBitmap (Png))
label.setPixmap (QPixmap.fromImage (img))

我沒有把完整的 Code 貼上來,上面上面短短的程式是讓 QLabel 能在貼圖的情況下秀出非方型的圖案,但 enterEvent 會失效,各位大神知道原因嗎?

froce iT邦大師 1 級 ‧ 2025-03-26 16:23:45 檢舉
多一行 label.setAttribute(Qt.WidgetAttribute.WA_Hover)試試看
預設好像沒有開hover事件
TO force : 開 WA_Hover 沒有用耶!但還是謝謝大神的回覆!
圖片
  熱門推薦
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
haward79
iT邦好手 3 級 ‧ 2025-03-28 11:49:01
最佳解答

供參,我自己測試 EnterEvent 是沒有問題的

from PyQt5.QtGui import QImage, QBitmap, QPixmap, QEnterEvent
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel

def eventHandler(event: QEnterEvent):
    print('EVENT')

if __name__ == '__main__':
    app = QApplication([])
    window = QWidget()
    layout = QVBoxLayout()

    maskImage = QBitmap.fromImage(QImage('mask.png'))
    baseImage = QPixmap.fromImage(QImage('base.jpg'))

    labels = [QLabel(f'Hello {i+1}') for i in range(3)]

    for label in labels:
        label.setPixmap(baseImage)
        label.setMask(maskImage)
        label.enterEvent = eventHandler
        layout.addWidget(label)

    window.setLayout(layout)
    window.show()

    app.exec()

非常感謝您的回覆,我現在用 QGraphicsView 已經實現了 enterEvent,但我認為 Qlabel 才是正確的做法我會研究看看。其實我以前是寫 C 語言,雖然看過超大型專案的架構但因為我從事技術的特性使然撰寫程式的技巧只有中等,現在我是對 PyQt5 有興趣在自修,但我連 Python 語法都不熟學得非常吃力,不過這個網站我發問幾乎都有回應,我真的覺得很讚,再一次感謝您的回覆。

我要發表回答

立即登入回答