我正在开发一种从CAM获取图片并将其放入窗口小部件窗口的软件。由于我的图片是640x480,我希望它调整图片大小以适应窗口大小,因此用户可以调整窗口大小以放大或缩小图像。 我做了以下算法:
到目前为止,它运作良好,但存在问题。当我打开程序时它开始无限增长,我知道这是因为窗口小部件正在扩展而且图片变大,因为窗口首先增加,这是一个积极的反馈。 但是,我已经尝试将大小策略更改为“首选”,“已修复”等。但没有一个有效。
我的窗口是这样的结构:Widget-> VLayout->标签(Pixmap图像)
答案 0 :(得分:1)
一种可能的解决方案是创建一个自定义窗口小部件并覆盖paintEvent方法,如下面的代码所示。
class Label(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent=parent)
self.p = QPixmap()
def setPixmap(self, p):
self.p = p
self.update()
def paintEvent(self, event):
if not self.p.isNull():
painter = QPainter(self)
painter.setRenderHint(QPainter.SmoothPixmapTransform)
painter.drawPixmap(self.rect(), self.p)
class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent=parent)
lay = QVBoxLayout(self)
lb = Label(self)
lb.setPixmap(QPixmap("car.jpg"))
lay.addWidget(lb)
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())