在 main Window、QPixmap 中设置图像的位置
Setting Position of Image in main Window, QPixmap
im 使用 QPixmap 加载图像并设置位置。
图像加载到我的主 window 但图像的位置没有设置我使用 setPos
但没有发生任何事情。
from PyQt5 import QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel
from PyQt5 import QtCore
import sys
from PyQt5.QtGui import QPixmap
class Window(QDialog):
def __init__(self):
super().__init__()
self.title = "PyQt5 Adding Image To Label"
self.top = 200
self.left = 500
self.width = 400
self.height = 500
self.InitWindow()
def InitWindow(self):
self.setWindowIcon(QtGui.QIcon("icon.png"))
self.setWindowTitle(self.title)
self.setStyleSheet("background-color:#202020")
self.setGeometry(self.left, self.top, self.width, self.height)
vbox = QVBoxLayout()
labelImage = QLabel(self)
pixmap = QPixmap("mario.png")
pixmap=pixmap.scaled(50, 50, QtCore.Qt.KeepAspectRatio)
#pixmap.setPos(100,60)
labelImage.setPixmap(pixmap)
vbox.addWidget(labelImage)
self.setLayout(vbox)
self.show()
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
下面几个概念一定要搞清楚:
QPixmap 不是视觉元素,而是构成图像的位的容器,因此它们没有任何 setPos()
方法(推荐:check the Qt docs)。
在您的代码中显示 QPixmap 内容的可视元素是 QLabel,因此您必须将位置设置为该小部件,但在这种情况下,OP 使用的布局旨在管理geometry(位置和大小),所以如果你想手动设置它,你不应该使用它。
def InitWindow(self):
self.setWindowIcon(QtGui.QIcon("icon.png"))
self.setWindowTitle(self.title)
self.setStyleSheet("background-color:#202020")
self.setGeometry(self.left, self.top, self.width, self.height)
<b>labelImage = QLabel(self)
pixmap = QPixmap("mario.png")
pixmap = pixmap.scaled(50, 50, QtCore.Qt.KeepAspectRatio)
labelImage.setPixmap(pixmap)
labelImage.move(100, 100)</b>
self.show()
im 使用 QPixmap 加载图像并设置位置。
图像加载到我的主 window 但图像的位置没有设置我使用 setPos
但没有发生任何事情。
from PyQt5 import QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel
from PyQt5 import QtCore
import sys
from PyQt5.QtGui import QPixmap
class Window(QDialog):
def __init__(self):
super().__init__()
self.title = "PyQt5 Adding Image To Label"
self.top = 200
self.left = 500
self.width = 400
self.height = 500
self.InitWindow()
def InitWindow(self):
self.setWindowIcon(QtGui.QIcon("icon.png"))
self.setWindowTitle(self.title)
self.setStyleSheet("background-color:#202020")
self.setGeometry(self.left, self.top, self.width, self.height)
vbox = QVBoxLayout()
labelImage = QLabel(self)
pixmap = QPixmap("mario.png")
pixmap=pixmap.scaled(50, 50, QtCore.Qt.KeepAspectRatio)
#pixmap.setPos(100,60)
labelImage.setPixmap(pixmap)
vbox.addWidget(labelImage)
self.setLayout(vbox)
self.show()
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
下面几个概念一定要搞清楚:
QPixmap 不是视觉元素,而是构成图像的位的容器,因此它们没有任何
setPos()
方法(推荐:check the Qt docs)。在您的代码中显示 QPixmap 内容的可视元素是 QLabel,因此您必须将位置设置为该小部件,但在这种情况下,OP 使用的布局旨在管理geometry(位置和大小),所以如果你想手动设置它,你不应该使用它。
def InitWindow(self):
self.setWindowIcon(QtGui.QIcon("icon.png"))
self.setWindowTitle(self.title)
self.setStyleSheet("background-color:#202020")
self.setGeometry(self.left, self.top, self.width, self.height)
<b>labelImage = QLabel(self)
pixmap = QPixmap("mario.png")
pixmap = pixmap.scaled(50, 50, QtCore.Qt.KeepAspectRatio)
labelImage.setPixmap(pixmap)
labelImage.move(100, 100)</b>
self.show()