首页 > 解决方案 > 如何在 PyQt5,python 中使用按键事件更改图像

问题描述

我只想在按键时显示不同的图像。不同的按键连接到不同的功能,显示不同的图像或做不同的事情。

一开始有文字,按空格键后,文字被删除,出现'image 1'。我想更改每当我按下键盘按钮 'F' 或 'J' 时显示在屏幕上的图像,但按下空格键后没有任何反应。

以下是我的代码。

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt

class StartExp(QWidget):
    
    def __init__(self):
        super().__init__()
        self.expUI()
        
    def expUI(self):                           
        self.setWindowTitle("ver.1")
        self.resize(500, 500)

        self.information()

    def information(self):
        # information
        self.info1 = QLabel(f"Hi, there!", self)
        self.info1.setAlignment(Qt.AlignCenter)
        
        layout = QVBoxLayout()
        layout.addWidget(self.info1)

        self.setLayout(layout)


    def image1(self):

        fix_h = 100
        fix_w = 100

        self.img1 = QLabel(self)
        image1 = QPixmap('1.jpg')
        self.img1.setPixmap(image1)
        self.img1.move(fix_w, fix_h)

    def image2(self):

        fix_h = 100
        fix_w = 100

        self.img2 = QLabel(self)
        image2 = QPixmap('2.jpg')
        self.img2.setPixmap(image2)
        self.img2.move(fix_w, fix_h)

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Escape:
            self.close()
        elif e.key() ==Qt.Key_F:

            self.clearimage2()
            self.image1()
            self.update()
            
        elif e.key() ==Qt.Key_J:
            self.clearimage1()
            self.image2()
            self.update()

        elif e.key() == Qt.Key_Space:
            self.clearinfo()
            self.image1()
            self.update()

    def clearinfo(self):
        try:
            self.info1.clear()
        except:
            pass
    def clearimage1(self):
        try:
            self.info1.clear()
        except:
            pass
    def clearimage2(self):
        try:
            self.image2.clear()
        except:
            pass



def run():
    app = QApplication(sys.argv)
    mainExp = StartExp()
    sys.exit(app.exec_())

run()

标签: pythonpyqt5keypress

解决方案


推荐阅读