2017-08-27 25 views
2

私はTkinterを使い、4つのフィールドを持つボックスを持っています。各フィールドは2つの単語で入力され、4つのフィールドに入力された単語の可能なすべてのパーミュテーションを取得しようとしています。Python Tkinter順列

これを実行すると、異なる単語の順番が出力されるのではなく、異なる単語の順列が出力されます。これを出力するために私の完全一致機能を取得するにはどうすればよいですか?どんな助けもありがとうございます。

from itertools import permutations 
from tkinter import * 
fields = 'Campaign', 'Add_Group', 'Location', 'Aux_Groups' 


def exact_match(entries): 
    for entry in entries: 
    field = entry[0] 
    text = entry[1].get() 
    perms = [''.join(p) for p in permutations(text)] 
    print (perms) 

def makeform(root, fields): 
    entries = [] 
    for field in fields: 
     row = Frame(root) 
     lab = Label(row, width=20, text=field, anchor='w') 
     ent = Entry(row) 
     row.pack(side=TOP, fill=X, padx=10, pady=10) 
     lab.pack(side=LEFT) 
     ent.pack(side=RIGHT, expand=YES, fill=X) 
     entries.append((field, ent)) 
    return entries 

if __name__ == '__main__': 
    root = Tk() 
    ents = makeform(root, fields) 
    root.bind('<Return>', (lambda event, e=ents: fetch(e))) 
    b1 = Button(root, text='Show', 
      command=(lambda e=ents: fetch(e))) 
    b1.pack(side=LEFT, padx=10, pady=10) 
    b2 = Button(root, text='Exact Match', command=(lambda e=ents: 
exact_match(e))) 

    b2.pack(side=LEFT, padx=10, pady=10) 
    b3 = Button(root, text='Phrase Match', command=root.quit) 
    b3.pack(side=LEFT, padx=10, pady=10) 
    b4 = Button(root, text='Broad Match', command=root.quit) 
    b4.pack(side=LEFT, padx=10, pady=10) 
    b5 = Button(root, text='Quit', command=root.quit) 
    b5.pack(side=LEFT, padx=10, pady=10) 
    root.mainloop() 

答えて

2

現時点では、単語全体ではなく、エントリの各文字に対して順列を実行しています。入力されたすべての単語をリストの理解度とともに収集し、順列を実行するだけです。

def exact_match(entries): 
    words = [entry[1].get() for entry in entries] 
    perms = [p for p in permutations(words)] 
    print(perms)