我无法正确更新我的进度条
I can not properly update my progressbar
我正在尝试在单击按钮时更新我的进度条,并且函数应该在收到命令(单击提交按钮)时更新,但这并没有正常发生
def progress(*args): #progressbar is set to be 50% completed
p.step(50)
def submitted(*args): #Progressbar is set to be fully completed and states information recorded
p.step(100)
messagebox.showinfo("Information Submitted", "Your information has been recorded.")
def clear(*args): #Clears everything and returns gui to start of program
l.selection_clear(0, END)
t.delete('1.0', END)
p.step(0)
#Sets title and creates gui
root=Tk()
#Configures column and row settings and sets padding
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
#Creates list of countries alphabetically
countries=["Finland", "France", "Greece", "Iceland", "Spain"]
l=Listbox(mainframe, height=5)
l.grid(column=0, row=0, sticky=(N,W,E,S))
#Adds items in list to listbox
for i in countries:
l.insert('end', i)
#Creates progessbar widget
p=ttk.Progressbar(mainframe, orient=VERTICAL, length=200, mode='determinate')
p.grid(column=2, row=0, sticky=(N,S))
#Activates progress function if something in listbox is selected
l.bind('<<ListboxSelect>>', progress)
#Submitting calls submitted function to set progressbar to 100 and statemessage box has been completed
subbttn= ttk.Button(mainframe, text="Submit", command=submitted)
subbttn.grid(column=1, row=1, sticky=(S, W, E))
clearbttn= ttk.Button(mainframe, text="Clear", command=clear)
clearbttn.grid(column=1, row=1, sticky=(N, W, E))
#Clears all inputs and returns program to how it was in the beginning
#Runs loop for gui
root.mainloop()
单击列表框中的内容后,进度条更新为 50%,这很好。但是点击提交按钮后没有任何变化。另外,如果我将其更改为 p.set(99),则进度条似乎在减少。我希望在单击提交按钮后进度条被完全填满。同样在点击清除按钮后,我希望进度条为0并且进度条没有变化。
看起来像
p=ttk.Progressbar(mainframe, orient=VERTICAL, length=200, mode='determinate')
变成
p=ttk.Progressbar(mainframe, variable=progressvar,orient=VERTICAL, length=200, mode='determinate')
和
p.step(50)
变成
progressvar.set(50)
使用变量并将其附加到您可以设置其值的进度条将使一切按我想要的方式工作。任何值的改变都完美完成。
p.step(100)
加 100 得到 "result modulo maximum"
所以你有 "0+100 modulo 100"
给出 0.
但是你可以使用 p["value"] = 100
按钮 Clear
不会更改进度条,因为函数 clear()
中存在未知变量 t
,因此在执行 p.step(0)
之前您会收到错误消息。
但是 p.step(0)
不会将值设置为 0
- 它会将 0
添加到当前值。
我正在尝试在单击按钮时更新我的进度条,并且函数应该在收到命令(单击提交按钮)时更新,但这并没有正常发生
def progress(*args): #progressbar is set to be 50% completed
p.step(50)
def submitted(*args): #Progressbar is set to be fully completed and states information recorded
p.step(100)
messagebox.showinfo("Information Submitted", "Your information has been recorded.")
def clear(*args): #Clears everything and returns gui to start of program
l.selection_clear(0, END)
t.delete('1.0', END)
p.step(0)
#Sets title and creates gui
root=Tk()
#Configures column and row settings and sets padding
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
#Creates list of countries alphabetically
countries=["Finland", "France", "Greece", "Iceland", "Spain"]
l=Listbox(mainframe, height=5)
l.grid(column=0, row=0, sticky=(N,W,E,S))
#Adds items in list to listbox
for i in countries:
l.insert('end', i)
#Creates progessbar widget
p=ttk.Progressbar(mainframe, orient=VERTICAL, length=200, mode='determinate')
p.grid(column=2, row=0, sticky=(N,S))
#Activates progress function if something in listbox is selected
l.bind('<<ListboxSelect>>', progress)
#Submitting calls submitted function to set progressbar to 100 and statemessage box has been completed
subbttn= ttk.Button(mainframe, text="Submit", command=submitted)
subbttn.grid(column=1, row=1, sticky=(S, W, E))
clearbttn= ttk.Button(mainframe, text="Clear", command=clear)
clearbttn.grid(column=1, row=1, sticky=(N, W, E))
#Clears all inputs and returns program to how it was in the beginning
#Runs loop for gui
root.mainloop()
单击列表框中的内容后,进度条更新为 50%,这很好。但是点击提交按钮后没有任何变化。另外,如果我将其更改为 p.set(99),则进度条似乎在减少。我希望在单击提交按钮后进度条被完全填满。同样在点击清除按钮后,我希望进度条为0并且进度条没有变化。
看起来像
p=ttk.Progressbar(mainframe, orient=VERTICAL, length=200, mode='determinate')
变成
p=ttk.Progressbar(mainframe, variable=progressvar,orient=VERTICAL, length=200, mode='determinate')
和
p.step(50)
变成
progressvar.set(50)
使用变量并将其附加到您可以设置其值的进度条将使一切按我想要的方式工作。任何值的改变都完美完成。
p.step(100)
加 100 得到 "result modulo maximum"
所以你有 "0+100 modulo 100"
给出 0.
但是你可以使用 p["value"] = 100
按钮 Clear
不会更改进度条,因为函数 clear()
中存在未知变量 t
,因此在执行 p.step(0)
之前您会收到错误消息。
但是 p.step(0)
不会将值设置为 0
- 它会将 0
添加到当前值。