2016-01-02 100 views
0

我不確定這是否已被詢問,但我有多個輸入框,其中包含默認的一段文本。我不想設置默認的文本片段,我試圖在輸入框被點擊時刪除。我希望能夠在單擊輸入框後立即刪除默認文本,以便用戶不必這樣做。我想知道是否有人可以分享一個快速例子,說明如何實現這一點,以便我可以實施。當按下輸入框文本時清除Tkinter

def removeValue(event): 
     self.entry.delete(0, 'end') 
     return None 

    for i in range(1, numberOfStudents + 1): 
     for p in range(0,2): 
      self.entry = Entry(self.master) 
      if p == 0: 
       self.entry.insert(0, 'Enter name of student') 
       self.entry.place(x = 10, y = (i * 30) + 26) 
       self.entry.bind("<Button-1>", removeValue) 
      if p == 1: 
       self.entry.insert(0, 'Enter predicted') 
       self.entry.place(x = (getWidth(master) - 140), y = (i * 30) + 26) 
       self.entry.bind("<Button-1>", removeValue) 

我有這個到目前爲止,但只刪除最後的輸入框文本。

+2

'entry.bind(「」,function_name)'? – furas

+1

我將如何去使用它? –

回答

2

假設你有你的默認文字整理出來,你想創建一個事件某處結合,與註釋的一般格式以上,不知道爲什麼它不是一個答案,因爲它是正確的:

import tkinter as tk 

root = tk.Tk() 
e = tk.Entry(root) 
e.insert(0, "some text") 

def some_callback(event): # note that you must include the event as an arg, even if you don't use it. 
    e.delete(0, "end") 
    return None 

e.bind("<Button-1>", some_callback) 

e.pack() 

最後,http://effbot.org是你的朋友: http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

編輯:從評論OP附加信息。 如果你有多個條目,你需要單獨清除各一個,你可以簡單地指的是所謂的使用

event.widget 

你的回調則可能爲工作遵循綁定的方法的部件:

def some_callback(event): 
    event.widget.delete(0, "end") 
    return None 
+1

有關完整的示例,請不要忘記對該小部件進行「包裝」。 – Reti43

+0

再一次,你有一個好點,我會補充完整性。爲你+1,讓我今天排隊:) – Blackbeard

+0

感謝您的幫助。我認爲它會像將它包含在我的For循環中一樣簡單。我有多個輸入框,我有它的工作,但是當我點擊一個輸入框時,它會刪除最後一個創建的文本。有沒有一種方法可以將它設置爲我在循環中創建的每個單獨的輸入框? –

1

由事件綁定調用的方法被賦予一個事件對象。該對象具有對觸發事件的小部件的引用。您可以使用它來清除小部件:

def removeValue(event): 
    event.widget.delete(0, 'end') 
相關問題