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 이벤트는 실행되지 않습니다...
마우스를 이미지에 올릴때만 이미지를 확대하고 마우스를 다른곳으로 옮기면 다시 이미지 크기가 원상복귀되게 만들고 싶은데 왜 이런걸까요??
감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력