python tkinter禁用文本小部件中的换行符

时间:2015-10-16 19:06:09

标签: python python-2.7 tkinter

在下面的代码中,我正在寻找一种方法来禁用文本小部件中的换行符。我只是使用了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()

2 个答案:

答案 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()