gpt4 book ai didi

python - QGridLayout 前面的 Qlabel

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:08 26 4
gpt4 key购买 nike

我试图让 QLabel 出现在 over QGridLayout 上,但我不知道该怎么做。

这是一个示例代码:

from PyQt5.QtWidgets import QWidget, QApplication, QGridLayout, QFrame, QLabel
import sys

class Foo(QWidget):

def __init__(self):
super().__init__()



grid_layout = QGridLayout()

rect1 = QLabel('RECT1')
rect1.setStyleSheet("color: green;")
grid_layout.addWidget(rect1, 0, 1)

rect2 = QLabel('RECT2')
rect2.setStyleSheet("color: blue;")
grid_layout.addWidget(rect2, 0, 2)

self.setLayout(grid_layout)
self.show()

app = QApplication(sys.argv)
foo = Foo()
sys.exit(app.exec_())

产生以下输出:

enter image description here

例如,我想创建另一个红色的 QLabel,并将其显示在图像的中心:

red_label = QLabel('red')
red_labe.setStyleSheet("font-size:20pt; color: red;");

像这样:

enter image description here

我怎样才能做到这一点?

最佳答案

一个可能的解决方案是使 red_label 成为 QWidget 的子对象,因为您必须在创建对象时传递 self 参数。除此之外,QLabel 必须在窗口更改大小时更改大小,为其模拟布局任务将创建一个信号,该信号将在 resizeEvent 事件中发出:

import sys

from PyQt5 import QtCore, QtWidgets


class Foo(QtWidgets.QWidget):
sizeChanged = QtCore.pyqtSignal(QtCore.QSize)

def __init__(self):
super().__init__()
grid_layout = QtWidgets.QGridLayout(self)

rect1 = QtWidgets.QLabel("RECT1")
rect1.setStyleSheet("color: green;")
grid_layout.addWidget(rect1, 0, 1)

rect2 = QtWidgets.QLabel("RECT2")
rect2.setStyleSheet("color: blue;")
grid_layout.addWidget(rect2, 0, 2)

red_label = QtWidgets.QLabel("red", self)
red_label.setAlignment(QtCore.Qt.AlignCenter)
red_label.setStyleSheet("font-size: 20pt; color: red;")

self.sizeChanged.connect(red_label.resize)

def resizeEvent(self, event):
self.sizeChanged.emit(event.size())
super().resizeEvent(event)


if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
foo = Foo()
foo.show()
sys.exit(app.exec_())

enter image description here

关于python - QGridLayout 前面的 Qlabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48936548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com