0
我目前正在從Tkinter/Python GUI接收用戶輸入並打印出排列的項目。Python/Tkinter排列如何跳過空字段
用戶可以填寫6個輸入字段,這些輸入字段可以輸出其輸入的排列。這個功能工作得很好。
但是,當用戶將幾個輸入字段留空時,由於置換了空白空間,它會產生重複問題。
我該怎麼做才能讓剩下的空字段被忽略並忽略。輸出將是僅具有條目的字段的排列......例如,當3個字段留空時,3個字的排列而不是6個排列。
from itertools import permutations
from itertools import chain
from tkinter import *
import re
fields = 'Campaign', 'Ad _Group', 'Location', 'Aux_Groups', 'Aux_Groups2',
'Aux_Groups3'
#makeForm Function
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
#ExactMatch Function.
def exactMatch(entries):
words = [entry[1].get() for entry in entries]
perms = [p for p in permutations((words))]
x1 = str(perms)
perms2 = x1.replace("," , '') #Takes out the Quotations
perms3 = perms2.replace("'" , '') #Takes out the Quotations
perms4 = perms3.replace("(" , '[')
perms5 = perms4.replace(')' , ']\n')
perms6 = perms5.replace (" ", "")
print("Exact Match:")
print('------------')
print(perms6)
if __name__ == '__main__':
root = Tk()
ents = makeForm(root, fields)
root.bind('<Return>', (lambda event, e=ents: fetch(e)))
#Exact Match Button
b2 = Button(root, text='Exact Match', command=(lambda e=ents: exactMatch(e)))
b2.pack(side=LEFT, padx=10, pady=10)
#Quit Button
b6 = Button(root, text='Quit', command=root.quit)
b6.pack(side=LEFT, padx=10, pady=10)
root.mainloop()
你可以治好你的理解列表只接受*不爲空值*但也許你想清理輸入的單詞(空格,符號...)? (你也應該在tkinter中更新一個標籤,而不是在控制檯上打印某些東西) – PRMoureu
當你從條目中獲取值來刪除空白時,你可以添加'.replace(「」,「」)''。 ('words = [entry [1] .get()。replace(「」,「」)用於輸入條目]') – SneakyTurtle
@PRMoureu感謝您的建議!我遺漏了很多我的代碼,標籤,按鈕等等,以保持它簡單 –