如何通过curselection()将进度条绑定到列表框

问题描述 投票:0回答:1

请看下面的代码:

from tkinter import *
    
# Creating Listbox

list = Listbox(window, selectmode = "multiple", font = ("Consolas", 21), width=100, cursor='dot')

# Inserting items in Listbox

list.insert(0, 'activity1')
list.insert(1, 'activity2')
list.insert(2, 'activity3')
list.insert(3, 'activity4')
    
list.pack()
    
def go(event):
    list = event.widget   
    progressbar.set(len(list.curselection())) 
    
progressbar = customtkinter.CTkProgressBar(master=window, width=100, height=20, border_width=5)
progressbar.pack()
progressbar.bind('<<Listbox>>', go)

我希望上述代码在每次单击列表框中的项目时移动进度条。它根本不动

python tkinter progress-bar
1个回答
0
投票
from tkinter import *
from tkinter import ttk

def go(event):
   selected_items = list.curselection()
   progressbar['value'] = len(selected_items)

window = Tk()
list = Listbox(window, selectmode="multiple", font=("Consolas", 21),
width=100, cursor='dot')
list.insert(0, 'activity1')
list.insert(1, 'activity2')
list.insert(2, 'activity3')
list.insert(3, 'activity4')
list.pack()

progressbar = ttk.Progressbar(window, length=100, mode='determinate')
progressbar.pack()

list.bind('<<ListboxSelect>>', go)

window.mainloop()
  • progressbar.set(len(selected_items))
    更改为
    progressbar['value'] = len(selected_items)
    。这会将进度条的值设置为所选项目的数量。
  • 创建进度条时添加
    mode='determinate'
    。这将进度条的模式设置为确定,这允许您手动设置值。
© www.soinside.com 2019 - 2024. All rights reserved.