f122233 2021-04-30 18:05 采纳率: 0%
浏览 44

为什么返回的是 .!search,萌新求解答

我想从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
  • 写回答

1条回答 默认 最新

  • Lotay_天天 优质创作者: 嵌入式与硬件开发技术领域 2023-05-04 15:21
    关注

    根据你的代码逻辑,如果在表格中没有找到匹配的内容,函数 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)
    

    这样使用起来就比较方便,只需要传入文档路径和目标内容即可得到搜索结果。

    评论

报告相同问题?