Python中的Progressbar和组合
我正在使用itertools.combinations模块查找大量组合。当我的程序找到它的所有组合(很多组合)时,它检查每个组合的总和是否为某个数字,然后程序将该组合存储在列表中Python中的Progressbar和组合,python,combinations,tk,itertools,ttk,Python,Combinations,Tk,Itertools,Ttk,我正在使用itertools.combinations模块查找大量组合。当我的程序找到它的所有组合(很多组合)时,它检查每个组合的总和是否为某个数字,然后程序将该组合存储在列表中 from itertools import * from math import * import Tkinter as tk import ttk x = int(raw_input('Enter number of combinations: ')) z = int(raw_input('Enter sum n
from itertools import *
from math import *
import Tkinter as tk
import ttk
x = int(raw_input('Enter number of combinations: '))
z = int(raw_input('Enter sum number: '))
def combinator():
comb = combinations(range(100), x)
for i in comb:
yield i
my_combinations = []
combination_s = combinator()
for i in combination_s:
print i
c = list(i)
if fsum(c)==z:
my_combinations.append(c)
print my_combinations
root = tk.Tk()
root.title('ttk.Progressbar')
pbar = ttk.Progressbar(root, length=300, mode='determinate', maximum = 100)
pbar.pack(padx=5, pady=5)
root.mainloop()
我想让ttk.progressbar在程序每次计算组合总和时显示进度。如何才能做到这一点?下面是一个示例,它增加了每个组合的进度条。它只是等待很短的时间,但您可以轻松地将其更改为在
ProgBarApp.start
中的for循环中执行一些计算,而不是time.sleep
from Tkinter import *
from itertools import combinations
import ttk
import time
class ProgBarApp:
def __init__(self):
self.vals = range(1, 20)
self.combs = list(combinations(self.vals,3))
self.n = len(self.combs)
self.progressbar = ttk.Progressbar(root, maximum = self.n+1)
self.progressbar.pack()
def start(self):
for c in self.combs:
self.progressbar.step()
time.sleep(0.01)
root.update()
root.destroy()
root = Tk()
p = ProgBarApp()
root.after(0, p.start())
root.mainloop()
到目前为止,您的代码根本不包括任何
tk
。在来这里之前,你至少应该尝试一下。但我不知道如何将它与进步联系起来。