This is a GreatWorld...

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from PySide6.QtCore import Qt, QPoint
  2. from PySide6.QtGui import QMovie
  3. from PySide6.QtWidgets import QApplication, QWidget, QLabel, QMenu, QVBoxLayout
  4. class MainWindow(QWidget):
  5. def __init__(self):
  6. super().__init__()
  7. self.setWindowTitle("派大星")
  8. self.setGeometry(100, 100, 300, 300)
  9. self.setAttribute(Qt.WA_TranslucentBackground)
  10. self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
  11. self.setStyleSheet("background-color: transparent;") # 设置背景颜色为透明
  12. self.layout = QVBoxLayout(self) # 创建一个垂直布局
  13. self.setLayout(self.layout) # 设置窗口的布局
  14. def center_on_screen(self):
  15. screen_geometry = QApplication.primaryScreen().geometry()
  16. window_geometry = self.frameGeometry()
  17. center_point = screen_geometry.center()
  18. window_geometry.moveCenter(center_point)
  19. self.move(window_geometry.topLeft())
  20. self.gif(0) # 默认显示第一个GIF
  21. def mousePressEvent(self, event):
  22. if event.button() == Qt.LeftButton:
  23. self.drag_position = event.globalPos() - self.frameGeometry().topLeft()
  24. elif event.button() == Qt.RightButton:
  25. self.showContextMenu(event.globalPos())
  26. def mouseMoveEvent(self, event):
  27. if event.buttons() == Qt.LeftButton and self.drag_position:
  28. self.move(event.globalPos() - self.drag_position)
  29. def showContextMenu(self, pos):
  30. menu = QMenu(self)
  31. self.setMenuStyle(menu)
  32. # 菜单项添加数据以便识别
  33. menu.addAction("表演", lambda: self.gif(0))
  34. menu.addAction("跌倒", lambda: self.gif(1))
  35. menu.addAction("玩耍", lambda: self.gif(2))
  36. menu.addAction("元旦节", lambda: self.gif(3))
  37. menu.addAction("圣诞节", lambda: self.gif(4))
  38. menu.addAction("退出", self.close)
  39. menu.exec(pos)
  40. def setMenuStyle(self, menu):
  41. menu.setStyleSheet("""
  42. QMenu {background-color: gray;}
  43. QMenu::item:hover {color: green;}
  44. """)
  45. def gif(self, index):
  46. # 移除之前所有的GIF
  47. if self.layout.count():
  48. for i in range(self.layout.count()):
  49. widget = self.layout.itemAt(i).widget()
  50. if widget:
  51. widget.deleteLater()
  52. label = QLabel(self)
  53. label.move(150, 150)
  54. if index == 0:
  55. movie = QMovie("./DsktopPet/img/派大星.gif")
  56. elif index == 1:
  57. movie = QMovie("./DsktopPet/img/派大星1.gif")
  58. elif index == 2:
  59. movie = QMovie("./DsktopPet/img/派大星2.gif") # 假设你有这个GIF文件
  60. elif index == 3:
  61. movie = QMovie("./DsktopPet/img/元旦节.gif")
  62. else:
  63. movie = QMovie("./DsktopPet/img/圣诞节.gif")
  64. label.setMovie(movie)
  65. movie.start()
  66. self.layout.addWidget(label) # 将新的QLabel添加到布局中
  67. if __name__ == "__main__":
  68. app = QApplication([])
  69. window = MainWindow()
  70. window.center_on_screen() # 将窗口居中
  71. window.show()
  72. app.exec()