2016-08-02 10 views
0

私はPython用にTkinterを使用しています。ユーザーがテキストウィジェットに何かを入力した後にテキストを再入力できるかどうかを調べようとしています。入力後にテキストを再入力するTkinter(Python)

現時点では、このような私のコードの出力:

The program when it starts. The program after a user inputs information.

私がしたい何がテキストフィールド内の中心に表示されるように入力したテキストのためです。私のコードは以下の通りです。すべてのテキストエントリは本質的に同じなので、ほとんどのコードは似ています。私は包括性のためだけにそれを含めていましたが、Text(...)オブジェクトの変更に対処しなければならないと確信しています。

ありがとうございます。

あなたはおそらく最も簡単な解決策は、ウィジェット内のデータをタグに再任意のキーのリリースにバインドを追加することで、内蔵の justify属性を持つ Entryウィジェットを使用することはできませんと仮定
root = Tk() 
root.title("Generate Report") 

bdFrame = ttk.Frame(root, padding="3 3 12 12", relief="groove", borderwidth=.5) 
bdFrame.grid(column=0, row=0, rowspan = 7,sticky=(N, W, E, S)) 

vrFrame = ttk.Frame(root, padding ="4 4 12 12", relief="groove", borderwidth=.5) 
vrFrame.grid(column=1, row=0, rowspan = 7,sticky=(N,W,E,S)) 

bdFileName = StringVar() 
bdRowStart = StringVar() 
bdCNCol = StringVar() 
bdCNumCol = StringVar() 
bdTBCol = StringVar() 
bdBRCol = StringVar() 
bdLCCol = StringVar() 

vrFileName = StringVar() 
vrRowStart = StringVar() 
vrCNCol = StringVar() 
vrCNumCol = StringVar() 
vrMSCol = StringVar() 

ttk.Label(bdFrame, text="X Variables").grid(column=0, row=0, columnspan=2, padx=2) 
ttk.Label(vrFrame, text="Y Report Data").grid(column=0, row=0, columnspan=2, padx=2) 

bdFileNameEntry = Text(bdFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
bdFileNameEntry.tag_configure("tag-center",justify='center') 
bdFileNameEntry.insert(INSERT, "bd.xlsx", "tag-center") 
bdFileNameEntry.bind("<Tab>", focus_next_window) 
bdFileNameEntry.bind("<Return>", focus_next_window) 
bdFileNameEntry.bind("<Shift-Tab>", focus_previous_window) 
bdFileNameEntry.grid(column=1, row = 1, sticky=(N,S,E,W)) 
ttk.Label(bdFrame, text="File Name").grid(column=0, row=1, sticky=(N,S,W,E)) 

bdRowStartEntry = Text(bdFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
bdRowStartEntry.tag_configure("tag-center",justify='center') 
bdRowStartEntry.insert(INSERT, "6", "tag-center") 
bdRowStartEntry.bind("<Tab>", focus_next_window) 
bdRowStartEntry.bind("<Return>", focus_next_window) 
bdRowStartEntry.bind("<Shift-Tab>", focus_previous_window) 
bdRowStartEntry.grid(column=1, row = 2, sticky=(N,S,E,W)) 
ttk.Label(bdFrame, text="Row Start").grid(column=0, row=2, sticky=(N,S,W,E)) 

bdCNColEntry = Text(bdFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
bdCNColEntry.tag_configure("tag-center",justify='center') 
bdCNColEntry.insert(INSERT, "B", "tag-center") 
bdCNColEntry.bind("<Tab>", focus_next_window) 
bdCNColEntry.bind("<Return>", focus_next_window) 
bdCNColEntry.bind("<Shift-Tab>", focus_previous_window) 
bdCNColEntry.grid(column=1,row=3, sticky=(N,S,E,W)) 
ttk.Label(bdFrame, text="Customer Name Column").grid(column=0, row=3, sticky=(N,S,W,E)) 

bdCNumColEntry = Text(bdFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
bdCNumColEntry.tag_configure("tag-center",justify='center') 
bdCNumColEntry.insert(INSERT, "C", "tag-center") 
bdCNumColEntry.bind("<Tab>", focus_next_window) 
bdCNumColEntry.bind("<Return>", focus_next_window) 
bdCNumColEntry.bind("<Shift-Tab>", focus_previous_window) 
bdCNumColEntry.grid(column=1,row=4, sticky=(N,S,E,W)) 
ttk.Label(bdFrame, text="Customer Code Column").grid(column=0, row=4, sticky=(N,S,W,E)) 

bdTBColEntry = Text(bdFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
bdTBColEntry.tag_configure("tag-center",justify='center') 
bdTBColEntry.insert(INSERT, "G", "tag-center") 
bdTBColEntry.bind("<Tab>", focus_next_window) 
bdTBColEntry.bind("<Return>", focus_next_window) 
bdTBColEntry.bind("<Shift-Tab>", focus_previous_window) 
bdTBColEntry.grid(column=1,row=5, sticky=(N,S,E,W)) 
ttk.Label(bdFrame, text="TotOwnBrNetRev Column").grid(column=0, row=5, sticky=(N,S,W,E)) 

bdBRColEntry = Text(bdFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
bdBRColEntry.tag_configure("tag-center",justify='center') 
bdBRColEntry.insert(INSERT, "J", "tag-center") 
bdBRColEntry.bind("<Tab>", focus_next_window) 
bdBRColEntry.bind("<Return>", focus_next_window) 
bdBRColEntry.bind("<Shift-Tab>", focus_previous_window) 
bdBRColEntry.grid(column=1,row=6, sticky=(N,S,E,W)) 
ttk.Label(bdFrame, text="BrNetRevPcnt Column").grid(column=0, row=6, sticky=(N,S,W,E)) 

bdLCColEntry = Text(bdFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
bdLCColEntry.tag_configure("tag-center",justify='center') 
bdLCColEntry.insert(INSERT, "D", "tag-center") 
bdLCColEntry.bind("<Tab>", focus_next_window) 
bdLCColEntry.bind("<Return>", focus_next_window) 
bdLCColEntry.bind("<Shift-Tab>", focus_previous_window) 
bdLCColEntry.grid(column=1,row=7, sticky=(N,S,E,W)) 
ttk.Label(bdFrame, text="LoadCount Column").grid(column=0, row=7, sticky=(N,S,W,E)) 

vrFileNameEntry = Text(vrFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
vrFileNameEntry.tag_configure("tag-center",justify='center') 
vrFileNameEntry.insert(INSERT, "vr.xlsx", "tag-center") 
vrFileNameEntry.bind("<Tab>", focus_next_window) 
vrFileNameEntry.bind("<Return>", focus_next_window) 
vrFileNameEntry.bind("<Shift-Tab>", focus_previous_window) 
vrFileNameEntry.grid(column=1, row = 1, sticky=(N,S,E,W)) 
ttk.Label(vrFrame, text="File Name").grid(column=0, row=1, sticky=(N,S,W,E)) 

vrRowStartEntry = Text(vrFrame, background = "LightSteelBlue", width=16, height = 1, wrap="word") 
vrRowStartEntry.tag_configure("tag-center",justify='center') 
vrRowStartEntry.insert(INSERT, "2", "tag-center") 
vrRowStartEntry.bind("<Tab>", focus_next_window) 
vrRowStartEntry.bind("<Return>", focus_next_window) 
vrRowStartEntry.bind("<Shift-Tab>", focus_previous_window) 
vrRowStartEntry.grid(column=1, row = 2, sticky=(N,S,E,W)) 
ttk.Label(vrFrame, text="Row Start").grid(column=0, row=2, sticky=(N,S,W,E)) 

vrCNColEntry = Text(vrFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
vrCNColEntry.tag_configure("tag-center",justify='center') 
vrCNColEntry.insert(INSERT, "A", "tag-center") 
vrCNColEntry.bind("<Tab>", focus_next_window) 
vrCNColEntry.bind("<Return>", focus_next_window) 
vrCNColEntry.bind("<Shift-Tab>", focus_previous_window) 
vrCNColEntry.grid(column=1, row = 3, sticky=(N,S,E,W)) 
ttk.Label(vrFrame, text="Customer Name Column").grid(column=0, row=3, sticky=(N,S,W,E)) 

vrCNumColEntry = Text(vrFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
vrCNumColEntry.tag_configure("tag-center",justify='center') 
vrCNumColEntry.insert(INSERT, "A", "tag-center") 
vrCNumColEntry.bind("<Tab>", focus_next_window) 
vrCNumColEntry.bind("<Return>", focus_next_window) 
vrCNumColEntry.bind("<Shift-Tab>", focus_previous_window) 
vrCNumColEntry.grid(column=1, row = 4, sticky=(N,S,E,W)) 
ttk.Label(vrFrame, text="Customer Number Column").grid(column=0, row=4, sticky=(N,S,W,E)) 

vrMSColEntry = Text(vrFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
vrMSColEntry.tag_configure("tag-center",justify='center') 
vrMSColEntry.insert(INSERT, "A", "tag-center") 
vrMSColEntry.bind("<Tab>", focus_next_window) 
vrMSColEntry.bind("<Return>", focus_next_window) 
vrMSColEntry.bind("<Shift-Tab>", focus_previous_window) 
vrMSColEntry.grid(column=1, row = 5, sticky=(N,S,E,W)) 
ttk.Label(vrFrame, text="Market Share Column").grid(column=0, row=5, sticky=(N,S,W,E)) 

vrMSColEntry = Text(vrFrame, background = "LightSteelBlue", width=16, height=1, wrap="word") 
vrMSColEntry.tag_configure("tag-center",justify='center') 
vrMSColEntry.insert(INSERT, "A", "tag-center") 
vrMSColEntry.bind("<Tab>", focus_next_window) 
vrMSColEntry.bind("<Return>", focus_next_window) 
vrMSColEntry.bind("<Shift-Tab>", focus_previous_window) 
vrMSColEntry.grid(column=1, row = 6, sticky=(N,S,E,W)) 
ttk.Label(vrFrame, text="Market Share Column").grid(column=0, row=6, sticky=(N,S,W,E)) 


ttk.Button(bdFrame, text="Calculate", command=saveValues).grid(column=0, row=8, columnspan=2, sticky=(N,S,E,W)) 
ttk.Button(vrFrame, text="Cancel", command=saveValues).grid(column=0, row=8, columnspan=2, sticky=(N,S,E,W)) 

for y in range (0,7): 
    root.rowconfigure(y, weight = 1) 
    bdFrame.rowconfigure(y, weight = 1) 
    vrFrame.rowconfigure(y, weight = 1) 
bdFrame.rowconfigure(7, weight = 1) 
for x in range (0, 2): 
    root.columnconfigure(x, weight = 2) 
    bdFrame.columnconfigure(x, weight = 1) 
    vrFrame.columnconfigure(x, weight = 1) 

for child in bdFrame.winfo_children(): child.grid_configure(padx=5, pady=5) 
for child in vrFrame.winfo_children(): child.grid_configure(padx=5, pady=7) 

bdFileNameEntry.focus() 

root.mainloop() 
+1

コード内で繰り返し繰り返されていることがわかります。代わりにエントリの関数やクラスを作成してみてください。コードを読みやすくし、行数を減らします。より読みやすいコードは、より多くの人々が手助けできるようになります:)また、コードにインポートを入れて、人々が自分のコードをテストできるようにします。 –

+0

1行入力に複数行のテキストウィジェットを使用する理由は何ですか? –

+0

@BryanOakleyある時点では、機能のエントリが処理できなかったために必要でしたが、今の理由で空白になっています。私はそれを元に戻すことができましたが、それを変更するための良い理由(重み付け/間隔)を覚えています。 – RWA4ARC

答えて

0

def retag(event): 
    event.widget.tag_add("tag-center", "1.0", "end") 
... 
bdFileNameEntry.bind("<Any-KeyRelease>", retag) 
関連する問題