[英]In Tkinter how do i remove focus from a widget?
我想手動從小部件中移除焦點。
您可以專注於另一個虛擬小部件。
編輯
from Tkinter import *
def callback():
print master.focus()
master = Tk()
e = Entry(master)
e.pack()
e.focus()
b = Button(master, text="get", width=10, command=callback)
b.pack()
master.mainloop()
專注於非“可聚焦”的小部件將移除另一個小部件的焦點。
w.focus_set()
和w.focus_force()
。 但是,方法w.focus_force()
是不禮貌的。 最好等待窗口管理器給你焦點。 將焦點設置到父窗口小部件或根窗口會從目標窗口小部件中移除焦點。takefocus
選項。 將 takefocus 設置為 0 以使您的小部件脫離焦點遍歷(當用戶點擊<Tab>
鍵時)。如果虛擬小部件是Canvas
則c.focus()
將不起作用。
使用c.focus_set()
或c.tk.call('focus',c)
首先關注畫布窗口本身。
那是因為
c.focus()
... 返回當前具有焦點的項目的 id,如果沒有項目具有焦點,則返回空字符串。 參考
c.focus(id_)
將集中於具有項目ID id_
畫布內。
c.focus("")
將從畫布中的任何項目移除焦點。
因此(在一些回調中)
c.config(highlightthickness = 0) # to remove the highlight border on focus
c.foucs_set()
c.focus("") # just to be sure
c.focus()
函數不同的原因是在 Tcl/Tk 的命令中有“主要”命令focus
以及 Canvas 特定的小部件命令focus
這在 Tcl/Tk 語法中不是問題,但在c.focus()
模塊中c.focus()
將調用底層畫布特定的foucs
。
來自Canvas
類 Line 2549 中的tkinter.py
def focus(self, *args):
"""Set focus to the first item specified in ARGS."""
return self.tk.call((self._w, 'focus') + args)
我的解決方案是root.focus()
它將刪除小部件焦點。
如果您使用 ttk 小部件,您可以通過移除顏色來“移除”聚焦環; 例如在按鈕上:
style = ttk.Style()
style.configure('TButton', focuscolor='')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.