请帮我用pyqt6写一个信息弹窗的代码 窗口要在5秒后自动消失,并且如果检测到多条数据,窗口要向上累积
时间: 2023-11-27 13:51:45 浏览: 67
封装一个Ext消息提示框,显示几秒后自动消失
4星 · 用户满意度95%
好的,以下是用 PyQt6 编写的信息弹窗代码:
```python
from PyQt6.QtCore import QTimer
from PyQt6.QtGui import QFont
from PyQt6.QtWidgets import QApplication, QLabel, QMessageBox, QVBoxLayout, QWidget
class InfoPopup(QWidget):
def __init__(self, message):
super().__init__()
# 设置弹窗样式
self.setStyleSheet(
"""
background-color: white;
border: 1px solid black;
padding: 10px;
"""
)
# 设置弹窗字体
font = QFont()
font.setPointSize(12)
self.setFont(font)
# 设置弹窗布局
layout = QVBoxLayout()
self.setLayout(layout)
# 设置弹窗文本
label = QLabel(self)
label.setText(message)
layout.addWidget(label)
def show(self):
super().show()
# 设置弹窗自动关闭
timer = QTimer(self)
timer.singleShot(5000, self.close)
def close(self):
# 关闭弹窗后向上移动其他弹窗
for popup in popups:
if popup != self and popup.isVisible():
popup.move(popup.pos().x(), popup.pos().y() - self.height())
super().close()
if __name__ == "__main__":
app = QApplication([])
# 测试数据
messages = ["这是第一条消息", "这是第二条消息", "这是第三条消息"]
# 创建弹窗
popups = []
for message in messages:
popup = InfoPopup(message)
popup.move(50, 50 + len(popups) * popup.height())
popups.append(popup)
popup.show()
app.exec()
```
这里创建了一个名为 `InfoPopup` 的子类,继承自 `QWidget` 类,用于显示信息弹窗。在 `InfoPopup` 类的构造函数中,设置了弹窗的样式和布局,并接收一个 `message` 参数作为弹窗内容。在 `show` 函数中,设置了弹窗自动关闭,并在关闭弹窗时向上移动其他弹窗。在 `__main__` 函数中,创建了多个 `InfoPopup` 对象,并相应地调整它们的位置,最后调用 `app.exec()` 进入事件循环。
阅读全文