sanya84
@sanya84
Фанатик Python 3

Как правильно наследоваться от двух классов?

Есть такой код
from tkinter import Tk
from vlc import MediaPlayer


class TkPlayer(Tk, MediaPlayer):

    def __init__(self):
        super(MediaPlayer, self).__init__()
        super(Tk, self).__init__()


def main():
    tk_player = TkPlayer()
    tk_player.mainloop()

Я ожидаю что у tk_player будет метод mainloop и set_mrl но увы...
Traceback (most recent call last):
  File "C:\PyScripterProjects\TkPlayer\TkPlayer.py", line 28, in <module>
    main()
  File "C:\PyScripterProjects\TkPlayer\TkPlayer.py", line 24, in main
    tk_player.mainloop()
AttributeError: 'MediaPlayer' object has no attribute 'mainloop'
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
sanya84
@sanya84 Автор вопроса
Фанатик Python 3
Я реализовал так, но это не совсем то что я хотел
from tkinter import Tk, Button, mainloop
from vlc import MediaPlayer

URL = "https://str2.pcradio.ru/Eminem-med"


class Player(Tk):
    def __init__(self):
        print("Инициализация Player")
        self.player = MediaPlayer()
        super().__init__()

        self.button = Button(self, text="Воспроизвести файл из интернета")
        self.button.configure(command=self.play)
        self.button.pack()

        self.protocol("WM_DELETE_WINDOW", self.on_closing)

    def play(self):
        return self.player.play()
    def set_mrl(self, mrl):
        return self.player.set_mrl(mrl)

    def on_closing(self):
        self.player.stop()
        del self.player
        self.destroy()


class TkPlayer(Player):
    pass

def main():
    tk_player = TkPlayer()
    tk_player.set_mrl(URL)
    tk_player.mainloop()

if __name__ == '__main__':
    main()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы