我有一個示例腳本(如下所示),其中我只是試圖每次按下「Tab」鍵時捕獲tkinter文本小部件的值。兩個功能用於幫助解決這個問題。在Tab改變值之前,應該運行並顯示文本小部件的值。另一個函數應該運行並在Tab更改值後顯示文本小部件的值。如何在Tab鍵在Tkinter中按下後捕獲文本小部件的值?
問題:
的問題是,只有一個函數運行 - 顯示的文本組件的之前的標籤改變其值的值的功能。
我的系統:
的Ubuntu 12.04
的Python 3.4.3
Tk的8.5
驗證碼:
import tkinter as tk
def display_before_value(value):
"""Display the value of the text widget before the class bindings run"""
print("The (before) value is:", value)
return
def display_after_value(value):
"""Display the value of the text widget after the class bindings run"""
print("The (after) value is:", value)
return
# Add the widgets
root = tk.Tk()
text = tk.Text(root)
# Add "post class" bindings to the bindtags
new_bindings = list(text.bindtags())
new_bindings.insert(2, "post-class")
new_bindings = tuple(new_bindings)
text.bindtags(new_bindings)
# Show that the bindtags were updated
text.bindtags()
# Outputs ('.140193481878160', 'Text', 'post-class', '.', 'all')
# Add the bindings
text.bind("<Tab>", lambda e: display_before_value(text.get("1.0", tk.END)))
text.bind_class("post-class", "<Tab>", lambda e: display_after_value(text.get("1.0", tk.END)))
# Show the text widget
text.grid()
# Run
root.mainloop()
銀行經營在命令行/終端中輸入以上代碼將只顯示display_before_value()函數的輸出。所以我假設後級綁定由於某種原因不起作用。但是,如果我將<Tab>
中的綁定更改爲<Key>
,則當我在文本窗口小部件中鍵入任意鍵(當然,Tab鍵除外)時,display_after_value()和和和都會正確運行。要顯示
在此先感謝
因此,當您按下標籤頁時,是否希望標籤空間之前的文本能夠被看到,並且標籤空間的文本能夠被看到之後? –
@BobMarshall - 是的,這是正確的。代碼中定義的兩個函數都應該處理這兩個操作。但是,僅執行display_before_value()函數。 – SizzlingVortex
我的答案解決了這個問題。 –