Команда шкалы Tkinter запускается при нажатии кнопки сетки

Я пытаюсь создать макет, используя Tkinter для Python3, который включает несколько кнопок и шкал. Кнопки работают нормально, но команда, которую я даю виджету масштаба, вызывается, когда я вызываю сетку на шкале. Почему это происходит и что я могу сделать, чтобы остановить это?

Вот упрощенная версия моего кода:

import tkinter
import time

WINDOW_HEIGHT = 150
WINDOW_WIDTH = 340

class Player(object):
    def __init__(self):
        self.window = tkinter.Tk()
        self.window.geometry(str(WINDOW_WIDTH) + 'x' + str(WINDOW_HEIGHT))
        self.current_time = tkinter.DoubleVar()

        self.progress_bar = tkinter.Scale(self.window,
                variable = self.current_time,
                command = self.set_current_time,
                orient = tkinter.HORIZONTAL,
                showvalue = 0, resolution=.001)

        self.progress_bar.grid(row=1, column=10)

    def set_current_time(self, time):
        print('setting current time')
        print(time)

    def update(self):
        self.window.update_idletasks()
        self.window.update()

def main():
    media_player = Player()
    while True:
        media_player.update()
        time.sleep(.1)

if __name__ == "__main__":
    main()

Функция set_current_time должна вызываться только тогда, когда ползунок фактически щелкается и перемещается, однако, как только выполняется сетка, set_current_time вызывается со значением времени 0. Как разместить ползунок без выполнения команды? После размещения слайдер работает как положено, но я бы хотел избежать первоначального вызова функции set_current_time.

0 ответов

Другие вопросы по тегам