通过下一次输入后,前一输出仍然存在

时间:2015-03-21 10:29:12

标签: python tkinter

在我的代码中,我只能得到一个查询的输出。如果我在输入框中传递下一个查询,则文本框中的上一个输出保持不变,并且我没有得到新查询的输出。

编码: -

import Tkinter as tk
import re
class SampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.L1 = tk.Label(self, text="Enter the query")
        self.L1.pack()        
        self.entry = tk.Entry(self)
        self.button = tk.Button(self, text="Get", command=self.on_button)
        self.button.pack()
        self.entry.pack()
        self.text = tk.Text(self)
        self.text.pack()
    def on_button(self):
        s1=(self.entry.get())

        with open("myxml.txt","rb")as f:
             row = f.readlines()
             for i, r in enumerate(row):
                if s1 in r:           
                    for x in range(i-3,i+4):
                        s = row[x]
                        m = re.sub(r'<(\w+)\b[^>]*>([^<]*)</\1>', r'\1-\2', s)
                        self.text.insert(tk.END, re.sub(r'<[^<>]*>','', m))  
app = SampleApp()
app.mainloop()

如何在传递下一个查询后获得下一个输出? 请帮忙!提前谢谢!

1 个答案:

答案 0 :(得分:0)

首先don't try to parse XML with regexp使用真正的XML解析器

我的意思是真的停止使用regexp 解析XML,因为正则表达式可能无法执行您想要的操作。 (当它发生时你会非常惊讶)。

要回到当前问题,您只需删除所有文本小部件内容即可。在适当的地方一行应该足够(未经测试)

import Tkinter as tk
import re
class SampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.L1 = tk.Label(self, text="Enter the query")
        self.L1.pack()        
        self.entry = tk.Entry(self)
        self.button = tk.Button(self, text="Get", command=self.on_button)
        self.button.pack()
        self.entry.pack()
        self.text = tk.Text(self)
        self.text.pack()
    def on_button(self):
        s1=(self.entry.get())

        #here is the line added
        self.text.delete(1.0, tk.END) #delete the content of self.text

        with open("myxml.txt","rb")as f:
             row = f.readlines()
             for i, r in enumerate(row):
                if s1 in r:           
                    for x in range(i-3,i+4):
                        s = row[x]
                        m = re.sub(r'<(\w+)\b[^>]*>([^<]*)</\1>', r'\1-\2', s)
                        self.text.insert(tk.END, re.sub(r'<[^<>]*>','', m))  
app = SampleApp()
app.mainloop()