在下面的代码中,我正在寻找一种方法来禁用文本小部件中的换行符。我只是使用了Entry小部件,但Entry没有UNDO功能。
当我在文本小部件中按Enter键时,将根据需要调用解析函数,但它也会转到下一行。
任何帮助都将不胜感激,谢谢。
#
from Tkinter import *
class Application(Frame):
def __init__(self):
self.master = Tk()
self.master.geometry("300x200")
Frame.__init__(self, self.master)
self.create_widgets()
def create_widgets(self):
self.master.bind('<Return>', self.parse)
self.grid()
w1 = Text(self, undo=True, height=1, width=26,wrap=NONE)
w1.grid(row=0, column=1, padx=5, pady=5, sticky=W)
self.submit = Button(self, text="Submit")
self.submit.bind('<Button-1>', self.parse)
self.submit.grid(row=0, column=2, sticky=E)
def parse(self, event):
print("You clicked?")
def start(self):
self.master.mainloop()
Application().start()
答案 0 :(得分:2)
您可以在事件绑定结束时使用WEB-INF/lib
来阻止Tkinter执行默认操作:
return 'break'
您还需要将返回绑定到条目:
def parse(self, event):
print("You clicked?")
return 'break'
答案 1 :(得分:0)
在您的解析功能中使用string.strip(s[, chars]),如下所示:
from Tkinter import *
START = "1.0"
END = "end"
class Application(Frame):
def __init__(self):
self.master = Tk()
self.master.geometry("300x200")
Frame.__init__(self, self.master)
self.create_widgets()
def create_widgets(self):
self.w1 = Text(self, undo=True, height=1, width=26,wrap=NONE)
self.w1.bind("<Return>", self.parse)
self.submit = Button(self, text="Submit")
self.submit.bind('<Button-1>', self.parse)
self.grid()
self.w1.grid(row=0, column=1, padx=5, pady=5, sticky=W)
self.submit.grid(row=0, column=2, sticky=E)
def parse(self, event):
parsed_str = self.w1.get(START, END).strip()
self.w1.delete(START, END)
print parsed_str
if __name__ == '__main__':
myapp = Application()
myapp.mainloop()