Проблемы с _init_ () - PullRequest
       3

Проблемы с _init_ ()

0 голосов
/ 20 апреля 2020

Я создал этот класс, чтобы начать фрейм для каждого объекта, я выполняю упражнение для игрока c.

class SoundPanel(Frame):
    def _init_(self, app, mixer, sound_file):
        Frame._init_(self, app)
        self.track = mixer.Sound(sound_file)
        self.track_playing = IntVar()
        track_button = Checkbutton(self, variable = self.track_playing,
                                         command = self.track_toogle,
                                         text = sound_file)
        track_button.pack(side = LEFT)
        self.volume = DoubleVar()
        self.volume.set(self.track.get_volume())
        volume_scale = Scale(self, variable = self.volume,
                                   from_ = 0.0,
                                   to = 1.0,
                                   resolution = 0.0,
                                   command = self.change_volume,
                                   label = "Volume",
                                   orient = HORIZONTAL )
        volume_scale.pack(side = RIGHT)

        def track_toggle(self):
            if self.track.playing.get() == 1:
              self.track.playing(loops = -1)

            else:
              self.track.stop()

        def change_volume(self, v):
          self.track.set_volume(self.volume.get())

, когда я пытаюсь создать объект, показывает сообщение об ошибке, пример:

panel = SoundPanel(app, mixer, "som1.wav")
panel.pack()

ERROR: 
panel = SoundPanel(app, mixer, "som1.wav")
TypeError: __init__() takes from 1 to 3 positional arguments but 4 were given

Я уже провел здесь свое исследование и попытался сократить / изменить параметры init ().

Справка Pls :)

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Я думаю, что есть недоразумение __init__ с двойным подчеркиванием - правильное использование, а не _init_ не с одинарным подчеркиванием с обеих сторон.

Вы написали так;

def _init_(self, app, mixer, sound_file):

Но это должно быть так;

def __init__(self, app, mixer, sound_file):
0 голосов
/ 20 апреля 2020

Измените имя функции, чтобы оно использовало два подчеркивания

def __init__(self, app, mixer, sound_file):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...