【发布时间】:2014-10-13 09:28:50
【问题描述】:
我正在尝试在 QLabel 中显示 QPixmap,但标签为空。
这是我的代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Test(QtGui.QWidget):
def __init__(self):
super(Test, self).__init__()
self.initUI()
def initUI(self):
pixmap = QtGui.QPixmap("test.png")
lbl = QtGui.QLabel(self)
lbl.setPixmap(pixmap)
self.move(300, 200)
self.setWindowTitle('Test')
self.show()
app = QtGui.QApplication(sys.argv)
ex = Test()
sys.exit(app.exec_())
当我启动应用程序时,我只得到一个空窗口:
我使用 Linux 发行版 (Manjaro)。我用 Ubuntu 测试过,但我遇到了同样的问题。
我不明白出了什么问题,因为我成功地在QGraphicsScene 和QIcon 在QPushButton 中显示了其他QPixmaps。
如何在我的标签中显示QPixmap?
编辑:
这是另一个带有布局的版本,但不能解决问题:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Test(QtGui.QWidget):
def __init__(self):
super(Test, self).__init__()
self.initUI()
def initUI(self):
layout = QtGui.QVBoxLayout()
pixmap = QtGui.QPixmap("test.png")
lbl = QtGui.QLabel(self)
lbl.setPixmap(pixmap)
layout.addWidget(lbl)
self.setLayout(layout)
self.move(300, 200)
self.setWindowTitle('test')
self.show()
app = QtGui.QApplication(sys.argv)
ex = Test()
sys.exit(app.exec_())
【问题讨论】:
-
检查像素图加载是否正常。
-
对我有用(两个版本) - 代码通常是正确的。您确定要从
.png文件所在的同一目录启动脚本吗?如何启动脚本(从命令行/从 IDE)? -
是的,我在同一目录中启动了脚本。但我意识到,如果我使用绝对路径,它就可以工作。所以一定是路径问题。坦克你的帮助。
-
@arthropode 供您参考,这是我用于测试的确切代码:github.com/afester/StackOverflow/tree/master/Python/PyQtPixmap - 当我在命令上启动脚本时,python 脚本是问题中代码的精确副本
PyQtPixmap目录中的./v1.py行,显示图像 -
尝试用
QtGui.QPixmap(":/images/test.png")替换QtGui.QPixmap("test.png")- 当然,首先创建图像目录并将test.png 移到那里。