我想从docx搜寻我想找的值,但是返回的是: " .!search"
代码如下
# i_view.py
from tkinter import *
from tkinter.messagebox import *
from i_search import *
class QueryFrame(Frame):
def __init__(self, tk=None):
super().__init__(tk)
self.root = tk # 定义内部变量root
self.itemName = StringVar()
self.createpage()
def search(self):
self.destroy()
print(Search(self.root, content=self.k))
def createpage(self):
Label(self, text="请输入故障码").grid(row=2, stick=W, pady=10)
Entry(self, textvariable=self.itemName).grid(row=2, column=1, stick=E)
self.k = str(self.itemName.get())
print(self.k)
Button(self, text="查询", command=self.search).grid(row=4, stick=W, pady=10)
Button(self, text="退出", command=self.quit).grid(row=4, column=1, stick=E)
class InputFrame(Frame):
def __int__(self, tk=None):
Frame.__init__(self, tk)
self.root = tk # 定义内部变量root
self.itemName = StringVar()
self.importPrice = StringVar()
self.sellPrice = StringVar()
self.deductPrice = StringVar()
class AboutFrame(Frame):
def __init__(self, tk=None):
Frame.__init__(self, tk)
self.root = tk
self.creat()
def creat(self):
Label(self, text="欢迎使用此系统!").pack()
#i_search.py
from tkinter import * from docx import Document class Search(Frame): def __init__(self, tk=None, content=None): Frame.__init__(self, tk) self.root = tk self.reason = StringVar() self.solution = StringVar() self.content = content self.path = "F:\\pycharm\\pythonProject\\engine.docx" self.document = Document(self.path) self.tables = self.document.tables self.createpage() def createpage(self): self.table = self.tables[0] for i in range(1,len(self.table.rows)): if str(self.table.cell(i, 0).text) == self.content: return(self.table.cell(i, 1).text+self.table.cell(i, 2).text) else: pass
根据你的代码逻辑,如果在表格中没有找到匹配的内容,函数 createpage()
将不会有任何的输出或返回结果。这样可能会导致不能清楚地知道是否成功搜索到了目标内容。你可以添加一些提示信息或返回值,使得结果更加直观和清晰。
同时,也可以将搜索过程封装成一个单独的函数并进行错误处理,以便更好地管理程序运行时发生的异常情况。例如:
def search_solution(document_path, target_content):
try:
document = Document(document_path)
tables = document.tables
table = tables[0]
for i in range(1, len(table.rows)):
if str(table.cell(i, 0).text) == target_content:
return table.cell(i, 1).text + table.cell(i, 2).text
return "未找到匹配的内容"
except Exception as e:
return str(e)
这样使用起来就比较方便,只需要传入文档路径和目标内容即可得到搜索结果。