| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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()
|