2012-09-21 15 views
0

使用此代碼片段,向上和向下鍵(U 「uf700」 U 「uf701」)通過將跟蹤:Tkinter.Entry()傳遞向上/向下鍵追蹤...有沒有辦法用ttk.Entry()來做到這一點?

import Tkinter as tk 
import ttk 

def tracesv(var): 
    print var 

class foo() 
    def __init__(self, parent=None): 
     self.win = tk.Toplevel() 
     self.svFrame = ttk.Frame(self.win) 
     self.svFrame.grid() 

     self.sv = tk.StringVar() 
     self.sv.trace('w', lambda nm, idx, mode, var=self.sv: tracesv(var)) 
     self.svEntry = tk.Entry(self.svFrame, textvariable=self.sv) 
     self.svEntry.grid() 
..... etc. 

如果我更換tk.Entry()與ttk.Entry()向上和向下鍵不通過跡線。有沒有辦法使這個工作與ttk.Entry()?

+1

您的代碼因發佈而不正確;你確定上面的代碼重現了這個問題嗎?我調整了足夠的代碼,使其工作,並不能重複你的結果。你所描述的不正確的Tkinter行爲 - 向上和向下箭頭不應該導致跟蹤在任何部件中觸發。你在哪個平臺上運行? –

+0

是的,我想「.....等」可能會顯示爲錯誤。我說這是一個片段,很明顯它不會按原樣運行。我在OSX上運行,向上和向下鍵通過;我只是在Windows上測試它,並且不會觸發跟蹤。它在不同平臺上功能不同的事實真的很糟糕。是吧,有沒有一種方法可以捕捉上下鍵,並改變與Entry小部件相關聯的文本變量,該小部件是正確的行爲並且可能跨平臺工作? – LMO

+1

聽起來好像你在Tkinter發現了一個bug。是的,您可以通過在它們上創建綁定來上/下鍵。按照措辭,你的原始問題是關於如何通過跟蹤跟蹤它們,所以嘗試改寫你的問題或提出另一個問題。 –

回答

0

聽起來好像您在Mac上的Tkinter中發現了一個錯誤,因爲箭頭鍵應將而不是傳遞給變量軌跡。變量跟蹤被設計爲在變量被修改時被調用。除非向上和向下箭頭修改值,否則他們不應該導致跟蹤觸發。

由於這是一個錯誤,因此沒有好的方法來強制其他小部件(如ttk.Entry小部件)上的錯誤。

如果您正在尋找一種方法來在用戶按下向上或向下鍵時調用某個函數,那麼正確的方法是爲這些鍵添加綁定到控件。

相關問題