74 lines
2.2 KiB
Python
Executable File
74 lines
2.2 KiB
Python
Executable File
import time
|
|
from time import sleep
|
|
|
|
from PyQt5.QtWidgets import QMainWindow
|
|
from PyQt5.QtCore import Qt, QTimer
|
|
from screeninfo import get_monitors
|
|
|
|
from transparent_widget import TransparentGLWidget
|
|
from vpet import Rotate
|
|
from vpet import VPet
|
|
|
|
|
|
def get_primary_monitor():
|
|
return next((monitor for monitor in get_monitors() if monitor.is_primary), None)
|
|
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.interval = 60
|
|
self.primary_monitor = get_primary_monitor()
|
|
# self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
|
|
self.setWindowFlags(Qt.WindowStaysOnTopHint)
|
|
# self.setAttribute(Qt.WA_TranslucentBackground)
|
|
self.click_event_time = 0
|
|
self.v_pet = VPet(self.move,
|
|
self.pos,
|
|
self.draw,
|
|
self.primary_monitor,
|
|
x=int(self.primary_monitor.width / 2),
|
|
y=self.primary_monitor.height)
|
|
|
|
self.loop_timer = QTimer(self)
|
|
self.loop_timer.setSingleShot(False)
|
|
self.loop_timer.setInterval(self.interval)
|
|
self.loop_timer.timeout.connect(self.loop)
|
|
self.loop_timer.start()
|
|
|
|
def mousePressEvent(self, event):
|
|
self.click_event_time = time.time()
|
|
self.v_pet.activity.set_interacting_with_user()
|
|
if event.button() == Qt.LeftButton:
|
|
self.drag_position = event.globalPos()
|
|
|
|
def mouseReleaseEvent(self, event):
|
|
time_delta = time.time() - self.click_event_time
|
|
if time_delta <= 0.2:
|
|
if event.button() == Qt.LeftButton:
|
|
print('Click left')
|
|
if event.button() == Qt.RightButton:
|
|
print('Click right')
|
|
else:
|
|
if event.button() == Qt.RightButton:
|
|
print('Click long right')
|
|
|
|
self.click_event_time = 0
|
|
self.v_pet.activity.is_interacting_with_user = False
|
|
|
|
def mouseMoveEvent(self, event):
|
|
if event.buttons() == Qt.LeftButton:
|
|
delta = event.globalPos() - self.drag_position
|
|
self.move(self.pos() + delta)
|
|
self.drag_position = event.globalPos()
|
|
self.click_event_time = 0
|
|
|
|
def draw(self, img):
|
|
img = img.rotate(Rotate.up)
|
|
self.resize(img.width, img.height)
|
|
self.setCentralWidget(TransparentGLWidget(img))
|
|
|
|
def loop(self):
|
|
self.v_pet.action_loop()
|
|
self.show()
|