2013-06-05 89 views
0

我使用tkinter作爲GUI。我結合事件的條目,像這樣:Python 3.3 tkinter的入口小部件更新密鑰

EntryFilePath.bind("<Key>", updateAmountOfPeople)

它的工作原理,但問題是,當比打字輸入之外的鍵被按下它只是更新。退格觸發它,箭頭觸發它,而不是字母或數字。我在尋找這個功能。

其他信息,可能是重要的:

PathFileName = StringVar() 
EntryFilePath = Entry(topLeftMidFrame, textvariable = PathFileName, width=45) 
EntryFilePath.pack(side=TOP, pady=32, padx=10) 

如何使它觸發任何按鍵?

編輯:我發現這隻發生在剛被選中時。它需要一個「其他」非[a-Z0-9]鍵一次,之後就可以走了。儘管如此,如果人們立即開始寫作,這是有問題的。

編輯2:它可能與更新延遲有關。

+0

這_ought_工作的基礎上,給出的信息;特定於窗口小部件的綁定應在類級綁定之前觸發。 Tkinter錯誤也許? –

+0

@DonalFellows我意識到了答案。 – PascalVKooten

回答

0

它可以通過改變

EntryFilePath.bind("<Key>", updateAmountOfPeople) 

得到解決,以

EntryFilePath.bind("<KeyRelease>", updateAmountOfPeople) 
+0

啊!你想要編輯後的值。嘗試查看延遲操作,直到應用程序「空閒」,或(更好地)開啓每個密鑰驗證。 –

1

結合應該爲每個按鍵的工作 - 如果不是的話,你正在做一些別的地方在你的代碼,以防止它不起作用,或者你的測試存在缺陷。

如果您希望函數在值更改時被調用,您可能需要考慮在與條目窗口小部件關聯的變量上設置跟蹤。無論是通過鍵盤輸入,粘貼鼠標等,跟蹤都會觸發。當用戶使用箭頭鍵或返回鍵或任何其他鍵時,將會調用回調函數而不是不影響價值。

例如:

def var_callback(*args): 
    print "the variable has changed:", PathFileName.get() 
PathFileName.trace("w", var_callback) 
+0

那麼當你改變這個變量時會發生什麼,它會調用這個回調函數?當條目上使用.get()時,「r」上的跟蹤會觸發嗎? – PascalVKooten

+0

@Dualinity:是的。 –

相關問題