我正在使用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)
帮助我只想填补并清空栏
答案 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()