当按“打开”按钮调用网格时,触发Tkinter scale命令

2024-04-19 01:31:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Tkinter for Python3创建一个包含多个按钮和比例的布局。按钮工作正常,但是当我调用scale上的grid时,我给scale小部件的命令被调用。为什么会这样?我能做些什么来阻止它?你知道吗

以下是我的代码的简化版本:

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\u current\u time函数,但是一旦执行网格,就会使用时间值0调用set\u current\u time。如何在不执行命令的情况下放置滑块?放置后,滑块按预期工作,但我想避免最初调用set\u current\u time函数。你知道吗


Tags: importselftimemaintkinterdefupdatecurrent