尝试将搜索结果从txt文件返回到GUI

时间:2018-05-12 01:23:26

标签: python

所以我试着编写一些需要搜索.txt文件的代码,并将结果返回给我创建的基本GUI。到目前为止,这是我的代码。当我点击GUI中的“搜索”按钮时,没有任何反应。

到目前为止我的代码:

import re

from tkinter import *

def query():
    search = lookfor.get()
    datafile = open("data.txt", "r")
    for line in datafile.readlines():
        if re.query(search, line, re.I):
            findings.insert(INSERT)
    datafile.close()

root = Tk()

lookfor = Entry(root)
lookfor.pack()

Button(root, text = "Search", command = query).pack()

findings = Text(root)
findings.pack()

root.mainloop()

我也尝试了另一种搜索txt文件的方法:

import re

from tkinter import *

def query():
    datafile = open("data.txt", "r")
    for line in datafile:
        line = line.strip()
        elements = line.split("\t")
        if str(lookfor.get()) in elements[0]:
            findings.insert(INSERT, elements[1])
        elif str(lookfor.get()) in elements[1]:
            findings.insert(INSERT, elements[0])
        findings.insert(END, '\n')
    datafile.close()

root = Tk()

lookfor = Entry(root)
lookfor.pack()

Button(root, text = "Search", command = query).pack()

findings = Text(root)
findings .pack()

root.mainloop()

1 个答案:

答案 0 :(得分:0)

运行程序后(修复query()问题后),会产生AttributeError

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
    return self.func(*args)
  File "/Users/usr/Documents/main.py", line 9, in query
    if re.query(search, line, re.I):
AttributeError: module 're' has no attribute 'query'

使用re.query()(使用完全相同的参数),而不是使用re.search()(不存在)。

<小时/> 此外,第10行还有TypeError

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
    return self.func(*args)
  File "/Users/usr/Documents/main.py", line 10, in query
    findings.insert(INSERT)
TypeError: insert() missing 1 required positional argument: 'chars'

通过更改以下行:

来解决此问题
findings.insert(INSERT)

要:

findings.insert(INSERT, line)

<小时/> 将所有这些放在一起可以得到以下程序:

import re

from tkinter import *

def query():
    search = lookfor.get()
    datafile = open("data.txt", "r")
    for line in datafile.readlines():
        if re.search(search, line, re.I):
            findings.insert(INSERT, line)
    datafile.close()

root = Tk()

lookfor = Entry(root)
lookfor.pack()

Button(root, text = "Search", command = query).pack()

findings = Text(root)
findings.pack()

root.mainloop()

希望有所帮助!