我正在尝试使用 Tkinter for 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 函数的初始调用。