【发布时间】:2018-10-16 05:50:42
【问题描述】:
我有一个标签 (L1),我想在 L1 中显示图片和文字。然后,我在 L1 中新建一个布局,并在布局中添加一个标签 (L2)。我在 L1 的paintEvent 中绘制文本。 L2 可以左右移动,L2 东西会覆盖文本。一个演示是:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyLabel(QLabel):
def __init__(self):
super(MyLabel, self).__init__()
layout = QHBoxLayout()
self.setLayout(layout)
label = QLabel('test')
label.setStyleSheet("background-color: rgb(255,255,255)")
layout.addWidget(label)
def paintEvent(self, QPaintEvent):
super(MyLabel, self).paintEvent(QPaintEvent)
pos = QPoint(50, 50)
painter = QPainter(self)
painter.drawText(pos, 'hello,world')
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
layout = QHBoxLayout(self)
self.label = MyLabel()
layout.addWidget(self.label)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
“你好,世界”被覆盖了。我怎样才能始终显示文本?
【问题讨论】:
-
为什么要把一个 QLabel 放在另一个 QLabel 里面?默认小部件不透明,因此子小部件将覆盖父小部件。
-
在 QLabel 中放置一个 QLabel 后,我可以通过 setgeometry 方法移动里面的 QLabel。因为我已经完成了子类,所以我想找到一种方法来解决这个问题。另外,我考虑了另一种方法,分别在绘图事件中使用 drawImage 和 drawText 在一个 QLabel 中显示文本和图像。
-
如果您使用布局将 QLabel 放置在另一个 QLabel 中,则使用 setGeometry() 将无济于事,因为位置由布局控制(这是布局任务)您要做什么?在您之前的帖子中,您已经可以同时放置文本和图像。
-
你是在问XY problem,而不是问你想要什么,请改进你的问题。