我很驚訝,當我在Python/Tkinter的撰寫和綁定爲Ctrl-B的功能表現異常(具體:它正在失去所選文本的價值,讓text.index(SEL_FIRST)是不確定的)。control-b:是否保留?
我很驚訝,改變更不可思議的事情後,我綁定它,而不是別的東西 - 和它的工作!
我搜查,但沒有找到任何東西:被控制-B綁定到Tkinter的東西默認???
亞歷山德羅
我很驚訝,當我在Python/Tkinter的撰寫和綁定爲Ctrl-B的功能表現異常(具體:它正在失去所選文本的價值,讓text.index(SEL_FIRST)是不確定的)。control-b:是否保留?
我很驚訝,改變更不可思議的事情後,我綁定它,而不是別的東西 - 和它的工作!
我搜查,但沒有找到任何東西:被控制-B綁定到Tkinter的東西默認???
亞歷山德羅
如果你正在談論的文本組件,從official tk text widget documentation:
「的左,右方向鍵移動 插入光標一個字符向左或向右 ;他們還清除文本...控制-b和 控制-F的任何 選擇行爲相同,左和右 分別「。
是,談論的文本組件。我沒有在文檔中找到它,因爲我在http://infohost.nmt使用了Tkinter文檔。edu/tcc/help/pubs/tkinter/text.html,那裏沒有提到它。所以...??? Control-b無法以某種方式重新映射? – alessandro
@alessandro:是的,它可以重新映射。 Tk中的所有綁定都可以修改,刪除,替換或增加。這是Tk的強項之一。綁定位於文本窗口小部件類「Text」上,您可以使用方法'bind_class'訪問它。我不能在一個小的評論中給出完整的解釋,所以對tk綁定標籤和類綁定做一點研究。還要了解一個小部件綁定中的「返回中斷」是什麼(一般來說,它可以防止一個類綁定到同一個事件上) –
謝謝布萊恩,這裏的鏈接 - 顯然在effbot http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm:
(...)
你可以使用bind_class方法 修改類 級綁定,但這會更改 應用程序中所有文本小部件的 行爲。一個更簡單的解決方案是 防止Tkinter的從傳播 事件其他處理程序;剛剛返回 字符串「破發」從事件 處理程序:
def ignore(event):
return "break"
text.bind("<Return>", ignore)
或
text.bind("<Return>", lambda e: "break")
順便說一句,如果你真的想 改變行爲 小部件在您的應用程序中,這裏的 如何使用
top.bind_class("Text", "<Return>", lambda e: None)
但也有很多的原因,你應該 沒有做到這一點:bind_class方法。例如,它 食堂事情完全 一天,你想從網上下載了一些很酷的小UI組件您 擴展應用程序 。更好地利用 自己的文本小部件的專業化, 並保持的Tkinter默認綁定 完整:
class MyText(Text):
def __init__(self, master, **kw):
apply(Text.__init__, (self, master), kw)
self.bind("<Return>", lambda e: "break")
代碼,代碼,代碼--show我們的代碼 –