gpt4 book ai didi

python - 如何检测鼠标单击使用 PySide 创建的 GUI 中显示的图像

转载 作者:太空狗 更新时间:2023-10-30 02:05:40 25 4
gpt4 key购买 nike

首先,我是 Python、Qt 和 PySide 的新手,如果这个问题看起来太简单了,请原谅我。

我想要做的是在使用 PySide API 构建的 GUI 中的网格中显示一堆照片。此外,当用户点击一张照片时,我希望能够显示该照片对应的信息。此外,我希望用于显示照片的容器/小部件允许更改照片,例如我应该能够替换网格中的任何照片,而不会导致再次从头开始创建整个照片网格。

最初我尝试使用 QLabel 来显示 QPixmap,但我意识到(无论是否有误)我无法检测标签上的鼠标点击。经过一些搜索,我得到的印象是我应该子类化 QLabel(或其他一些相关类)并以某种方式覆盖 QWidget 的(QLabel 的父类)mousePressEvent() 以启用鼠标点击检测。问题是我不确定该怎么做,或者是否有任何替代小部件可以用来包含我的照片而不需要通过子类自定义。

谁能推荐一个比 QLabel 更合适的容器来显示照片,同时允许我检测鼠标在照片上的点击,或者提供一些代码片段来继承 QLabel 以使其能够检测鼠标点击?

提前感谢您的任何回复。

最佳答案

我添加了一个示例,说明如何发出信号并连接到另一个插槽。还有 docs很有帮助

from PySide.QtCore import *
from PySide.QtGui import *

import sys


class Main(QWidget):


def __init__(self, parent=None):
super(Main, self).__init__(parent)

layout = QHBoxLayout(self)

picture = PictureLabel("pic.png", self)
picture.pictureClicked.connect(self.anotherSlot)

layout.addWidget(picture)
layout.addWidget(QLabel("click on the picture"))

def anotherSlot(self, passed):
print passed
print "now I'm in Main.anotherSlot"


class PictureLabel(QLabel):

pictureClicked = Signal(str) # can be other types (list, dict, object...)

def __init__(self, image, parent=None):
super(PictureLabel, self).__init__(parent)
self.setPixmap(image)

def mousePressEvent(self, event):
print "from PictureLabel.mousePressEvent"
self.pictureClicked.emit("emit the signal")

a = QApplication([])
m = Main()
m.show()
sys.exit(a.exec_())

关于python - 如何检测鼠标单击使用 PySide 创建的 GUI 中显示的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10184941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com