from PySide6.QtCore import Qt, QPoint from PySide6.QtGui import QMovie from PySide6.QtWidgets import QApplication, QWidget, QLabel, QMenu, QVBoxLayout class MainWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle("派大星") self.setGeometry(100, 100, 300, 300) self.setAttribute(Qt.WA_TranslucentBackground) self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) self.setStyleSheet("background-color: transparent;") # 设置背景颜色为透明 self.layout = QVBoxLayout(self) # 创建一个垂直布局 self.setLayout(self.layout) # 设置窗口的布局 def center_on_screen(self): screen_geometry = QApplication.primaryScreen().geometry() window_geometry = self.frameGeometry() center_point = screen_geometry.center() window_geometry.moveCenter(center_point) self.move(window_geometry.topLeft()) self.gif(0) # 默认显示第一个GIF def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.drag_position = event.globalPos() - self.frameGeometry().topLeft() elif event.button() == Qt.RightButton: self.showContextMenu(event.globalPos()) def mouseMoveEvent(self, event): if event.buttons() == Qt.LeftButton and self.drag_position: self.move(event.globalPos() - self.drag_position) def showContextMenu(self, pos): menu = QMenu(self) self.setMenuStyle(menu) # 菜单项添加数据以便识别 menu.addAction("表演", lambda: self.gif(0)) menu.addAction("跌倒", lambda: self.gif(1)) menu.addAction("玩耍", lambda: self.gif(2)) menu.addAction("元旦节", lambda: self.gif(3)) menu.addAction("圣诞节", lambda: self.gif(4)) menu.addAction("退出", self.close) menu.exec(pos) def setMenuStyle(self, menu): menu.setStyleSheet(""" QMenu {background-color: gray;} QMenu::item:hover {color: green;} """) def gif(self, index): # 移除之前所有的GIF if self.layout.count(): for i in range(self.layout.count()): widget = self.layout.itemAt(i).widget() if widget: widget.deleteLater() label = QLabel(self) label.move(150, 150) if index == 0: movie = QMovie("./DsktopPet/img/派大星.gif") elif index == 1: movie = QMovie("./DsktopPet/img/派大星1.gif") elif index == 2: movie = QMovie("./DsktopPet/img/派大星2.gif") # 假设你有这个GIF文件 elif index == 3: movie = QMovie("./DsktopPet/img/元旦节.gif") else: movie = QMovie("./DsktopPet/img/圣诞节.gif") label.setMovie(movie) movie.start() self.layout.addWidget(label) # 将新的QLabel添加到布局中 if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.center_on_screen() # 将窗口居中 window.show() app.exec()