Slavatar Asked:2020-12-15 15:44:21 +0000 UTC2020-12-15 15:44:21 +0000 UTC 2020-12-15 15:44:21 +0000 UTC 在其他窗口之上创建一个透明窗口 772 如何创建一个将在所有窗口之上绘制的透明窗口让我们说Python中的一个正方形? 如果可能的话。 python 1 个回答 Voted Best Answer S. Nick 2020-12-15T16:53:27Z2020-12-15T16:53:27Z PyQt是 Python 语言的 Qt 框架的实现。 pip install PyQt5 pip install pyqt5-tools import sys from PyQt5.Qt import * class Message(QDialog): def __init__(self, msg: str, *args, destroy_time: int = None): super().__init__(*args) self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) self.setAttribute(Qt.WA_TranslucentBackground) self.widget = QWidget(self) self.widget.setObjectName('Custom_Widget') layout = QVBoxLayout(self) layout.addWidget(self.widget) self.layout = QGridLayout(self.widget) self.layout.addItem(QSpacerItem( 40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum), 0, 0) self.layout.addWidget(QPushButton('r', self, clicked=self.accept, objectName='closeButton'), 0, 1) # The label label = QLabel(msg) label.setFont(QFont("Times", 14, QFont.Bold, italic=True)) self.layout.addWidget(label, 2, 0, 5, 2, alignment=Qt.AlignCenter) self.adjustSize() def mousePressEvent(self, event): self.old_Pos = event.globalPos() self.old_width = self.width() self.old_height = self.height() def mouseMoveEvent(self, event): if (event.buttons() == Qt.LeftButton): delta = QPoint (event.globalPos() - self.old_Pos) if (self.old_Pos.x() > self.x() + self.old_width - 20) or \ (self.old_Pos.y() > self.y() + self.old_height - 20): w = self.old_width+delta.x() if self.old_width+delta.x() > 500 else 500 h = self.old_height+delta.y() if self.old_height+delta.y() > 400 else 400 self.setFixedSize(w, h) else: self.move(self.x() + delta.x(), self.y() + delta.y()) self.old_Pos = event.globalPos() class MainWindow(QWidget): def __init__(self, player: QWidget): super().__init__() layout = QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.addWidget(player) self.msg = Message("Создание прозрачного окна <br>поверх остальных - возможно.") self.msg.resize(420, 420) self.msg.show() Stylesheet = """ #Custom_Widget { background: rgba( 155, 155, 155, 150); border-radius: 20px; border: 2px solid #ff2025; } #closeButton { min-width: 36px; min-height: 36px; font-family: "Webdings"; qproperty-text: "r"; border-radius: 10px; } #closeButton:hover { color: #ccc; background: red; } """ if __name__ == '__main__': app = QApplication(sys.argv) app.setStyleSheet(Stylesheet) w = MainWindow(QPushButton("Button")) w.resize(400, 400) w.show() sys.exit(app.exec_())
PyQt是 Python 语言的 Qt 框架的实现。