- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PyQt5 开发一个非常简单的应用程序,用于显示和排序图像。我是 Python 和 Qt 的新手,特别是我遇到了一些问题。我试图在 QLabel 对象中显示 QPixmap 图像,并且它们显示正确。但是,它们默认排成一排,我不知道如何移动它们。
(我知道代码很糟糕,但我试图在清理它之前让它工作。)
这是我的代码:
class ImageClassifier(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
hbox = QtWidgets.QHBoxLayout(self)
mainImg = QPixmap("img.png")
xmplImg0 = QPixmap("img0.png")
xmplImg1 = QPixmap("img1.png")
xmplImg2 = QPixmap("img2.png")
xmplImg3 = QPixmap("img3.png")
lbl = QtWidgets.QLabel(self)
lbl0 = QtWidgets.QLabel(self)
lbl1 = QtWidgets.QLabel(self)
lbl2 = QtWidgets.QLabel(self)
lbl3 = QtWidgets.QLabel(self)
lbl.setPixmap(mainImg)
lbl0.setPixmap(xmplImg0)
lbl1.setPixmap(xmplImg1)
lbl2.setPixmap(xmplImg2)
lbl3.setPixmap(xmplImg3)
hbox.addWidget(lbl)
hbox.addWidget(lbl0)
hbox.addWidget(lbl1)
hbox.addWidget(lbl2)
hbox.addWidget(lbl3)
lbl0.setGeometry(30, 30, 30, 30)
self.setLayout(hbox)
self.move(300, 200)
self.setWindowTitle('Fruit Classifier')
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
ic = ImageClassifier()
sys.exit(app.exec_())
lbl0.setGeometry()
函数根本没有做任何事情,我也不知道为什么。有谁知道解决此问题的方法或设置 QLabel 对象位置的更好方法?
最佳答案
遵循以下要点。
[更新]看看我想说什么。举个例子更好:
如果您使用 BoxLayout,您的对象的位置将不会符合您的要求。它将遵循 BoxLayout 策略。您还为 QLabels 传递了 (self),使 QWidget 成为其父级。真是一团糟。
检查下面的代码。我没有 BoxLayout,我只是说谁是我(Qlabel)的 parent 。所以我会按照我“爸爸”说的去做。所以现在您可以移动它了。
import sys
from PyQt5 import QtWidgets
class ImageClassifier(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setFixedSize(500,500)
lbl = QtWidgets.QLabel(self)
lbl.setFixedSize(50,50)
lbl0 = QtWidgets.QLabel(self)
lbl0.setFixedSize(50, 50)
lbl1 = QtWidgets.QLabel(self)
lbl1.setFixedSize(50, 50)
lbl2 = QtWidgets.QLabel(self)
lbl2.setFixedSize(50, 50)
lbl3 = QtWidgets.QLabel(self)
lbl3.setFixedSize(50, 50)
lbl.setStyleSheet("""background-color: red;""")
lbl0.setStyleSheet("""background-color: green;""")
lbl1.setStyleSheet("""background-color: blue;""")
lbl2.setStyleSheet("""background-color: yellow;""")
lbl3.setStyleSheet("""background-color: black;""")
lbl0.move(50,50)
lbl1.move(100, 100)
lbl2.move(150, 150)
lbl3.move(150, 150)
self.move(300, 200)
self.setWindowTitle('Fruit Classifier')
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
ic = ImageClassifier()
sys.exit(app.exec_())
这只是一个简单的方法。您最好创建自己的继承 QLabel 的标签。并根据需要进行个性化设置。
关于python - PyQt5 QWidget.setGeometry() 不适用于 QLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40243011/
在将子 QWidget 添加到父 QWidget 后,我无法立即设置它的尺寸。问题是它根本没有设置几何图形: from PyQt4 import QtCore, QtGui class MyWid
我查看了以下链接,但找不到解决我的问题的方法: Qt setGeometry: Unable to set geometry Unable to set geometry in Qt https://
我的环境如下: Qt 5.4,使用 -platform win32-msvc2013 -opengl desktop -no-icu -skip webkit 从源代码构建 Visual Studio
我正在尝试使用 qt 小部件覆盖 Maya 的事件 View 3d。 我有一个 Canvas 基类(一个透明的小部件),我可以在上面做一些绘画工作。它的父级是包装的 avtice 3d View 。一
我正在使用 PyQt5 开发一个非常简单的应用程序,用于显示和排序图像。我是 Python 和 Qt 的新手,特别是我遇到了一些问题。我试图在 QLabel 对象中显示 QPixmap 图像,并且它们
我想在这里创建类似的自定义布局:http://doc.qt.io/qt-5/qtwidgets-layouts-flowlayout-flowlayout-cpp.html 我想要一些方法将复选框放在
为什么? setGeometry: Unable to set geometry 22x22+320+145 on QWidgetWindow/'WidgetClassWindow'. Resulti
所以我是 Famo.us 的新手,这可能是个愚蠢的问题(我希望不是)。 var Mesh = require('famous/webgl-renderables/Mesh'); ..... var m
我将一些代码从 Qt 5.6.0 迁移到了 5.12.0。令人惊讶的是,我收到了很多与 QWindowsWindow::setGeometry 相关的警告。每当一个对话框显示在另一个对话框之上时,我都
我是一名优秀的程序员,十分优秀!