from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import sys class floatBox(QWidget): def __init__(self,parent:QWidget=None,items:list=None,x:int=0,y:int=0): QWidget.__init__(self,parent) self.setMouseTracking(True) self.setWindowFlags(Qt.WindowType.FramelessWindowHint|Qt.WindowType.NoDropShadowWindowHint|Qt.WindowType.Popup) # self.setWindowFlags(Qt.WindowType.FramelessWindowHint|Qt.WindowType.Popup) self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) # self.setBackgroundRole() self.setStyleSheet ("background-color: rgb(245, 180, 245);") y_size=self._add_items(items) x_size=500 desk=QApplication.desktop() if(y+y_size>desk.height()): y=desk.height()-y_size if(x+x_size>desk.width()): x=desk.width()-x_size self.setGeometry(QRect(x, y, x_size, y_size)) def _add_items(self,items:list): if(items is None): items=["没有要显示的提示"] for i in range(len(items)): lable=QLabel(self) lable.setText(items[i]) lable.setGeometry(QRect(5,5+i*25,500,25)) return len(items)*25+10 if __name__ == "__main__": app = QApplication(sys.argv) widget = QWidget() widget.resize(870, 410) widget.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) label=floatBox(items=["aaaaaa","bbbbbbbb","cccccccc"]) widget.destroyed.connect(label.close) widget.show() label.show() a=app.exec()