Pyqt5 Label Pixmap 을 이용하여 이미지 띄우고, 이미지에 hover 기능 만들때

조회수 1734회

Pyqt5를 통해 이미지를 띄우고 해당 이미지에 마우스를 올리면 (Hover) 이미지가 확대되게 만들고 싶습니다.

제가 짠 코드는

import sys

from PyQt5 import QtCore, QtWidgets

from PyQt5.QtGui import QIcon,QPixmap

from PyQt5.QtWidgets import *

from PIL import Image



class MyWindow(QMainWindow):



    def __init__(self):

        super().__init__()

        self.setupUI()

    BUTTON_IMAGE = 'K-006.jpg'

    def setupUI(self):

        self.setGeometry(800, 400, 850, 950)



        textLabel = QLabel("Message: ", self)

        textLabel.move(20, 20)



        self.label = QLabel("", self)

        self.label.move(80, 20)

        self.label.resize(150, 30)



        btn1 = QPushButton("Click", self)

        btn1.move(20, 60)

        btn1.clicked.connect(self.btn1_clicked)



        btn2 = QPushButton("Clear", self)

        btn2.move(140, 60)

        btn2.clicked.connect(self.btn2_clicked)





        self.ImageButton = QLabel(self)

        self.ImageButton.move(0,100)

        self.ImageButton.resize(300, 150)

        self.ImageButton.setPixmap(QPixmap(self.BUTTON_IMAGE).scaled(300,150))

        self.ImageButton.linkActivated.connect(self.image_clicked)

        self.ImageButton.linkHovered.connect(self.image_hovered)

        self.ImageButton.setText("<a href=\"K-006.jpg\"><img src=\"K-006.jpg\" width=\"300\" height=\"150\" /></a>")

        # self.ImageButton.setText("<a href=\"http://www.google.com\">'Click this link to go to Google'</a>")

        #self.ImageButton.setOpenExternalLinks(True)



    def btn1_clicked(self):

        self.label.setText("버튼이 클릭되었습니다.")



    def btn2_clicked(self):

        self.label.clear()

    def image_hovered(self):

        print('Hoverd_Image')
        self.ImageButton.resize(800, 800)
        self.ImageButton.setText("<a href=\"K-006.jpg\"><img src=\"K-006.jpg\" width=\"800\" height=\"800\" /></a>")

    def image_clicked(self):

        print('Image_clicked')

        im=Image.open(self.BUTTON_IMAGE)

        im.show()



if __name__ == "__main__":

    app = QApplication(sys.argv)

    mywindow = MyWindow()

    mywindow.show()

    app.exec_()

위와 같습니다.

여기서

self.ImageButton.setText("<a href=\"http://www.google.com\">'Click this link to go to Google'</a>")

일 경우 마우스가 올라갈때 마다 Hover 이벤트가 정상적으로 작동합니다.

하지만

self.ImageButton.setText("<a href=\"K-006.jpg\"><img src=\"K-006.jpg\" width=\"300\" height=\"150\" /></a>")

일경우 이미지에 마우스를 올리면 Hover 이벤트가 한번만 작동합니다. 마우스를 다른곳으로 옮겨도 Hover 이벤트는 실행되지 않습니다...

마우스를 이미지에 올릴때만 이미지를 확대하고 마우스를 다른곳으로 옮기면 다시 이미지 크기가 원상복귀되게 만들고 싶은데 왜 이런걸까요??

감사합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)