python 3.x progressbar tkinter倒退?

时间:2015-01-08 05:33:28

标签: tkinter python-3.4

我正在使用python 3.4,tkinter并且我想使用progrssbar来模拟注射器,我的意思是注射器内的液体将是进度条

通常这个进度条在tkinter python 3.4中处于水平或垂直位置,我希望它垂直,我知道它开始从底部到顶部填充条形,这是正确的注射器正在流动

但我的问题是我怎么能倒退呢?我的意思是进度条而不是填充注射器 将清空注射器

我正在使用

BarVolVal_1 = ttk.Progressbar(mGui, orient='horizontal', length=100, mode='determinate')
BarVolVal_1.place(x=80,y=80)
BarVolVal_1.start(50)

帮助我只想填补并清空栏

2 个答案:

答案 0 :(得分:1)

使用Progressbar.start(),您无法控制步长,默认为1.
因此,您不必使用Progressbar.start(),而是必须创建自己的循环来调用Progressbar.step(stepsize)。这样,您可以使步长为负,以反转步骤的方向。

在下面的示例中,我创建了一个step函数,每隔50ms调用一次,根据方向dir,设置一步为1或-1(值为dir)。然后在3秒后调用change_dir,这会将步骤的方向更改为-1,因此进度条会清空#39;。从那时起,方向每2秒改变一次。

import tkinter as tk
from tkinter import ttk

def step():
    BarVolVal_1.step(dir)
    mGui.after(50, step)

def change_dir():
    global dir
    dir *= -1
    mGui.after(2000, change_dir)

mGui = tk.Tk()
dir = 1

BarVolVal_1 = ttk.Progressbar(mGui, orient='horizontal', length=100, mode='determinate')
BarVolVal_1.pack()

step()
mGui.after(3000, change_dir)

mGui.mainloop()

答案 1 :(得分:0)

好的,感谢您的帮助,但该代码适用于2.7,

3.4的代码是这个,它正在工作

import tkinter as tk
from tkinter import ttk
def step():
    BarVolVal_1.step(dir)
    mGui.after(50, step)
def change_dir():
    global dir
    dir *= -1
    mGui.after(2000, change_dir)
mGui = tk.Tk()
dir = 1
BarVolVal_1 = ttk.Progressbar(mGui, orient='vertical', length=100, mode='determinate')
BarVolVal_1.pack()
step()
mGui.after(3000, change_dir)
mGui.mainloop()