天天看點

《Tkinter GUI Application Development Blueprints》書中第五章音頻播放器的bug改正

在第五章中的seekbar.py中有如下兩個方法

    def on_seekbar_clicked(self, event=None):

        if event.x > 0 and event.x < self.width:

            self.slide_to_position(event.x)

    def slide_to_position(self, new_position):

        self.coords(self.red_rectangle, 0, 0, new_position, new_position)

        self.coords(self.seekbar_knob, new_position, 0)

        self.event_generate("<<SeekbarPositionChanged>>", x=new_position)

self.event_generate("<<SeekbarPositionChanged>>", x=new_position)這句代碼的位置錯了,應該改成:

    def on_seekbar_clicked(self, event=None):

        if event.x > 0 and event.x < self.width:

            self.slide_to_position(event.x)

            self.event_generate("<<SeekbarPositionChanged>>", x=event.x)

    def slide_to_position(self, new_position):

        self.coords(self.red_rectangle, 0, 0, new_position, new_position)

        self.coords(self.seekbar_knob, new_position, 0)

是應該當seekbar被點選後才用自定義事件傳遞點選位置,進而調整播放時間。

bug在于不是不能實作上述功能,而是會産生一個新的播放器去播放調整後的時間。