mirror of
https://github.com/jeertmans/manim-slides.git
synced 2025-05-21 20:46:01 +08:00
refactor(lib): change PyQT5 to PySide6 (#62)
* refactor(lib): change PyQT5 to PySide6 This, hopefully, should now add support for M1 chips * chore: update README and change imports
This commit is contained in:
@ -26,8 +26,6 @@ Tool for live presentations using either [Manim (community edition)](https://www
|
||||
|
||||
While installing Manim Slides and its dependencies on your global Python is fine, I recommend using a [virtualenv](https://docs.python.org/3/tutorial/venv.html) for a local installation.
|
||||
|
||||
> **_NOTE:_** Startin with version 4.2, Manim Slides seems to have **troubles installing on mac M1 chips**. An issue has been created [#53](https://github.com/jeertmans/manim-slides/issues/53), and we recommend following its evolution for any update.
|
||||
|
||||
### Dependencies
|
||||
|
||||
Manim Slides requires either Manim or ManimGL to be installed. Having both packages installed is fine too.
|
||||
@ -90,7 +88,7 @@ class Example(Slide):
|
||||
self.play(dot.animate.move_to(ORIGIN))
|
||||
self.pause() # Waits user to press continue to go to the next slide
|
||||
|
||||
self.wait() # The presentation directly exits after last animation
|
||||
self.wait()
|
||||
```
|
||||
|
||||
You **must** end your `Slide` with a `self.play(...)` or a `self.wait(...)`.
|
||||
|
@ -3,7 +3,7 @@ from enum import Enum
|
||||
from typing import List, Optional, Set
|
||||
|
||||
from pydantic import BaseModel, root_validator, validator
|
||||
from PyQt5.QtCore import Qt
|
||||
from PySide6.QtCore import Qt
|
||||
|
||||
from .manim import logger
|
||||
|
||||
|
@ -9,10 +9,10 @@ import click
|
||||
import cv2
|
||||
import numpy as np
|
||||
from pydantic import ValidationError
|
||||
from PyQt5 import QtGui
|
||||
from PyQt5.QtCore import Qt, QThread, pyqtSignal, pyqtSlot
|
||||
from PyQt5.QtGui import QPixmap
|
||||
from PyQt5.QtWidgets import QApplication, QGridLayout, QLabel, QWidget
|
||||
from PySide6 import QtGui
|
||||
from PySide6.QtCore import Qt, QThread, Signal, Slot
|
||||
from PySide6.QtGui import QPixmap
|
||||
from PySide6.QtWidgets import QApplication, QGridLayout, QLabel, QWidget
|
||||
from tqdm import tqdm
|
||||
|
||||
from .commons import config_path_option, verbosity_option
|
||||
@ -282,9 +282,9 @@ class Presentation:
|
||||
class Display(QThread):
|
||||
"""Displays one or more presentations one after each other."""
|
||||
|
||||
change_video_signal = pyqtSignal(np.ndarray)
|
||||
change_info_signal = pyqtSignal(dict)
|
||||
finished = pyqtSignal()
|
||||
change_video_signal = Signal(np.ndarray)
|
||||
change_info_signal = Signal(dict)
|
||||
finished = Signal()
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@ -409,7 +409,7 @@ class Display(QThread):
|
||||
}
|
||||
)
|
||||
|
||||
@pyqtSlot(int)
|
||||
@Slot(int)
|
||||
def set_key(self, key: int) -> None:
|
||||
"""Sets the next key to be handled."""
|
||||
self.key = key
|
||||
@ -484,7 +484,7 @@ class Info(QWidget):
|
||||
|
||||
self.update_info({})
|
||||
|
||||
@pyqtSlot(dict)
|
||||
@Slot(dict)
|
||||
def update_info(self, info: dict):
|
||||
self.animationLabel.setText("Animation: {}".format(info.get("animation", "na")))
|
||||
self.stateLabel.setText("State: {}".format(info.get("state", "unknown")))
|
||||
@ -517,7 +517,7 @@ class InfoThread(QThread):
|
||||
|
||||
|
||||
class App(QWidget):
|
||||
send_key_signal = pyqtSignal(int)
|
||||
send_key_signal = Signal(int)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@ -603,13 +603,13 @@ class App(QWidget):
|
||||
self.closeAll()
|
||||
event.accept()
|
||||
|
||||
@pyqtSlot(np.ndarray)
|
||||
@Slot(np.ndarray)
|
||||
def update_image(self, cv_img: dict):
|
||||
"""Updates the image_label with a new opencv image"""
|
||||
self.pixmap = self.convert_cv_qt(cv_img)
|
||||
self.label.setPixmap(self.pixmap)
|
||||
|
||||
@pyqtSlot(dict)
|
||||
@Slot(dict)
|
||||
def update_info(self, info: dict):
|
||||
"""Updates the image_label with a new opencv image"""
|
||||
pass
|
||||
|
@ -4,8 +4,8 @@ from functools import partial
|
||||
from typing import Any
|
||||
|
||||
import click
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import (
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtWidgets import (
|
||||
QApplication,
|
||||
QDialog,
|
||||
QDialogButtonBox,
|
||||
@ -25,9 +25,8 @@ from .manim import logger
|
||||
WINDOW_NAME: str = "Configuration Wizard"
|
||||
|
||||
keymap = {}
|
||||
for key, value in vars(Qt).items():
|
||||
if isinstance(value, Qt.Key):
|
||||
keymap[value] = key.partition("_")[2]
|
||||
for key in Qt.Key:
|
||||
keymap[key.value] = key.name.partition("_")[2]
|
||||
|
||||
|
||||
class KeyInput(QDialog):
|
||||
|
Reference in New Issue
Block a user