如何将图像 load/display 放到 PyQT window 上?
How to load/display an image onto a PyQT window?
我遇到了以下创建 PyQT 的代码 window。
class PrettyWidget(QtGui.QWidget):
def __init__(self):
super(PrettyWidget, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(600,300,1000,600)
self.center()
self.setWindowTitle('Browser')
self.show()
def center(self):
qr = self.frameGeometry()
cp = QtGui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def main():
app = QtGui.QApplication(sys.argv)
w = PrettyWidget()
app.exec_()
if __name__ == '__main__':
main()
我想 insert/embed 将图像添加到此 window 中(假设 image.jpg 路径已知)。它最好位于 window 的底部,并且不应占用整个 window。我该怎么做?
我们可以使用 QLabel 来显示图像,因为它有一个 setPixmap 方法,如下所示
lb = QtGui.QLabel(self)
pixmap = QtGui.QPixmap("{path/of/file}")
height_label = 100
lb.resize(self.width(), height_label)
lb.setPixmap(pixmap.scaled(lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.show()
完整代码:
class PrettyWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent=parent)
self.initUI()
def initUI(self):
self.resize(1000,600)
self.center()
self.setWindowTitle('Browser')
self.lb = QtGui.QLabel(self)
pixmap = QtGui.QPixmap("test.png")
height_of_label = 100
self.lb.resize(self.width(), height_of_label)
self.lb.setPixmap(pixmap.scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.show()
def resizeEvent(self, event):
self.lb.resize(self.width(), self.lb.height())
self.lb.setPixmap(self.lb.pixmap().scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
QtGui.QWidget.resizeEvent(self, event)
def center(self):
qr = self.frameGeometry()
cp = QtGui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def main():
app = QtGui.QApplication(sys.argv)
w = PrettyWidget()
app.exec_()
if __name__ == '__main__':
main()
截图:
底部:
def initUI(self):
self.resize(1000,600)
self.center()
self.setWindowTitle('Browser')
self.lb = QtGui.QLabel(self)
pixmap = QtGui.QPixmap("test.png")
height_of_label = 100
self.lb.resize(self.width(), height_of_label)
self.lb.move(0, self.height() -self.lb.height())
self.lb.setPixmap(pixmap.scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.show()
def resizeEvent(self, event):
self.lb.resize(self.width(), self.lb.height())
self.lb.setPixmap(self.lb.pixmap().scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.lb.move(0, self.height() -self.lb.height())
QtGui.QWidget.resizeEvent(self, event)
截图:
我遇到了以下创建 PyQT 的代码 window。
class PrettyWidget(QtGui.QWidget):
def __init__(self):
super(PrettyWidget, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(600,300,1000,600)
self.center()
self.setWindowTitle('Browser')
self.show()
def center(self):
qr = self.frameGeometry()
cp = QtGui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def main():
app = QtGui.QApplication(sys.argv)
w = PrettyWidget()
app.exec_()
if __name__ == '__main__':
main()
我想 insert/embed 将图像添加到此 window 中(假设 image.jpg 路径已知)。它最好位于 window 的底部,并且不应占用整个 window。我该怎么做?
我们可以使用 QLabel 来显示图像,因为它有一个 setPixmap 方法,如下所示
lb = QtGui.QLabel(self)
pixmap = QtGui.QPixmap("{path/of/file}")
height_label = 100
lb.resize(self.width(), height_label)
lb.setPixmap(pixmap.scaled(lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.show()
完整代码:
class PrettyWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent=parent)
self.initUI()
def initUI(self):
self.resize(1000,600)
self.center()
self.setWindowTitle('Browser')
self.lb = QtGui.QLabel(self)
pixmap = QtGui.QPixmap("test.png")
height_of_label = 100
self.lb.resize(self.width(), height_of_label)
self.lb.setPixmap(pixmap.scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.show()
def resizeEvent(self, event):
self.lb.resize(self.width(), self.lb.height())
self.lb.setPixmap(self.lb.pixmap().scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
QtGui.QWidget.resizeEvent(self, event)
def center(self):
qr = self.frameGeometry()
cp = QtGui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def main():
app = QtGui.QApplication(sys.argv)
w = PrettyWidget()
app.exec_()
if __name__ == '__main__':
main()
截图:
底部:
def initUI(self):
self.resize(1000,600)
self.center()
self.setWindowTitle('Browser')
self.lb = QtGui.QLabel(self)
pixmap = QtGui.QPixmap("test.png")
height_of_label = 100
self.lb.resize(self.width(), height_of_label)
self.lb.move(0, self.height() -self.lb.height())
self.lb.setPixmap(pixmap.scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.show()
def resizeEvent(self, event):
self.lb.resize(self.width(), self.lb.height())
self.lb.setPixmap(self.lb.pixmap().scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.lb.move(0, self.height() -self.lb.height())
QtGui.QWidget.resizeEvent(self, event)
截图: