Example #1
0
class ViewMediaFrame(BasePAFrame):
    """
    фрейм с картинкой
    """

    def __init__(self, *args, **kwargs):
        BasePAFrame.__init__(self, *args, **kwargs)

        self.vlc_instance = vlc.Instance()
        self.vlc_player = self.vlc_instance.media_player_new()

        self.platform = platform.system().lower()

        self.media_label = Label(self)

    def _pa_layout(self):
        self.media_label.pack()

    def set_image(self, image, width, height):
        if not image:
            self.reset()
            return

        image_width, image_height = image.size
        if image_height > height:
            percent = height/float(image_height)
            width = int(image_width * percent)
        elif image_width > width:
            percent = width / float(image_width)
            height = int(image_height * percent)
        photo_image = ImageTk.PhotoImage(
            image.resize((width, height), Image.ANTIALIAS))
        self.media_label.config(image=photo_image)
        self.media_label.image = photo_image

    def set_video(self, video_path):
        """
        проигрывает указанное видео
        """
        self.vlc_player.set_media(
            self.vlc_instance.media_new(video_path))
        if self.platform == 'windows':
            self.vlc_player.set_hwnd(self.media_label.winfo_id())
        else:
            self.vlc_player.set_xwindow(self.media_label.winfo_id())
        # self.vlc_player.play()

    def reset(self):
        self.media_label.config(image=None)
        self.media_label.image = None