TRIZ经典矛盾矩阵.exe

TRIZ经典矛盾矩阵.exe

  • 一、概要
  • 二、技术细节
    • I.函数open_dialog()和open_version_dialog()
    • II.函数resolvent()
    • III.函数Invention_Principle_Content()
  • 三、源文件:[TRIZ经典矛盾矩阵.zip](https://download.csdn.net/download/weixin_46153372/88797934)

一、概要

TRIZ经典矛盾矩阵.exe_第1张图片
  这是一款基于pyqt5开发的用于查询TRIZ经典矛盾矩阵的软件。

  矛盾矩阵是一种工具,可以帮助人们解决技术创新过程中遇到的各种矛盾。它最早由阿奇舒勒先生在1970年提出,后来经过其他人的不断发展和完善,现在已经成为一套比较成熟的理论和方法体系。

  矛盾矩阵的作用是提供一种系统性检索入口,根据系统的改善参数和恶化参数,找到解决特定类型技术矛盾的发明原理。它可以通过分析技术系统中的矛盾,并利用矩阵的形式表达各元素之间的矛盾关系,从而帮助人们更好地理解和解决这些矛盾。使用矛盾矩阵的方法如下:

  1. 确定技术系统中的矛盾:首先需要明确技术系统中存在的矛盾,这可以通过分析系统的功能、性能、成本等方面来确定。
  2. 确定通用工程参数:技术系统中的矛盾通常可以用一些通用工程参数来描述,例如:强度、硬度、稳定性等等。需要根据矛盾确定需要关注的通用工程参数。
  3. 构建矛盾矩阵:根据确定的需要关注的通用工程参数以及其他相关因素,构建一个矛盾矩阵。该矩阵中包含了各种可能的矛盾关系,以及解决这些矛盾的发明原理。
  4. 检索发明原理:在矛盾矩阵中,可以系统性地检索可以解决特定矛盾的发明原理。可以根据矩阵中提供的检索入口,快速找到可能解决问题的发明原理。
  5. 应用发明原理:在检索到可能解决问题的发明原理后,可以将其应用到实际的技术系统中,尝试解决存在的矛盾。

  在使用矛盾矩阵时,需要注意的是,它只是一种工具,不能保证一定能解决问题。但是,通过矛盾矩阵提供的信息和指导,可以帮助人们更有效地发现和解决技术系统中的矛盾。

TRIZ经典矛盾矩阵表.xslx

二、技术细节

I.函数open_dialog()和open_version_dialog()

# 使用说明对话框
def open_dialog(self):
    # 创建对话框实例
    dialog = Instructions_Dialog(self)
    # 显示对话框并等待用户响应
    dialog.exec_()

# 版本对话框
def open_version_dialog(self):
    # 创建对话框实例
    dialog = version_Dialog(self)
    # 显示对话框并等待用户响应
    dialog.exec_()

  代码中,这两个函数(open_dialogopen_version_dialog)的流程看起来比较简单。下面是基于这些代码的分析:

  1. open_dialog函数:

    • 创建一个名为Instructions_Dialog的对话框实例,这个对话框包含一些使用说明和指导信息。
    • 通过调用exec_()方法来显示这个对话框,并等待用户的响应。这个方法会阻塞当前线程,直到用户关闭对话框。
  2. open_version_dialog函数:

    • 创建一个名为version_Dialog的对话框实例,这个对话框用来显示软件的版本信息。
    • 同样,通过调用exec_()方法来显示这个对话框,并等待用户的响应。

  需要注意的是,这些函数并没有明确的返回值,它们的工作主要是显示对话框并等待用户交互。当用户关闭对话框后,exec_()方法会返回,这时就可以根据需要对用户输入进行进一步的处理。

II.函数resolvent()

# 寻找解决方法
def resolvent(self):
    try:
        self.textBrowser.clear()
        self.greetings()        # 软件使用问候语
        data_dict = {'运动物体的重量': 3, '静止物体的重量': 4, '运动物体的长度': 5, '静止物体的长度': 6, '运动物体的面积': 7, '静止物体的面积': 8, '运动物体的体积': 9, '静止物体的体积': 10, '速度': 11, '力': 12, '应力、压强': 13, '形状': 14, '稳定性': 15, '强度': 16, '运动物体的作用时间': 17, '静止物体的作用时间': 18, '温度': 19, '照度': 20, '运动物体的能量消耗': 21, '静止物体的能量消耗': 22, '功率': 23, '能量损失': 24, '物质损失': 25, '信息损失': 26, '时间损失': 27, '物质的量': 28, '可靠性': 29, '测量精度': 30, '制造精度': 31, '作用于物体的有害因素': 32, '物体产生的有害因素': 33, '可制造性': 34, '操作流程的方便性': 35, '可维修性': 36, '适应性、通用性': 37, '系统的复杂性': 38, '控制和测量的复杂性': 39, '自动化程度': 40, '生产率': 41}
        # 打开Excel文件
        workbook = openpyxl.load_workbook(r'D:\python_demo\TRIZ经典矛盾矩阵\statics\TRIZ矛盾矩阵表.xlsx')
        # 选择工作表
        worksheet = workbook['经典矛盾矩阵']
        # 读取单元格内容
        # self.improve_parameter_comboBox.currentText()  改善的通用工程参数
        # self.deterioration_parameters_comboBox.currentText()  恶化的通用工程参数
        cell_value = worksheet.cell(row=data_dict[self.deterioration_parameters_comboBox.currentText()], column=data_dict[self.improve_parameter_comboBox.currentText()]).value
        self.textBrowser.append("解决的发明原理序号为:" + str(cell_value) + "(按优先级排序)")

        # 读取发明原理
        self.Invention_Principle_Content(str(cell_value))

    except EOFError as e:
        self.textBrowser.append(str(e))

  整体架构流程可以归纳为以下几点:

  1. 在一个名为resolvent的方法中,首先清除了textBrowser中的任何先前的内容。
  2. 然后调用greetings函数来显示一些问候语。
  3. 定义了一个名为data_dict的字典,其中包含一些关键词和其对应的数值。
  4. 打开一个Excel文件并选择一个工作表。
  5. 根据用户从两个下拉菜单(self.improve_parameter_comboBox.currentText()self.deterioration_parameters_comboBox.currentText())选择的参数名,从Excel表中读取对应的单元格内容。
  6. 然后,这个读取的值被添加到textBrowser中,显示给用户。
  7. 接下来,使用从Excel表中读取的值作为参数调用Invention_Principle_Content函数。
  8. 如果在上述过程中发生EOFError异常,将在textBrowser中显示该异常的消息。

III.函数Invention_Principle_Content()

# 根据发明原理序号读取发明原理
def Invention_Principle_Content(self, content):
    try:
        # content含有数字
        if any(char.isdigit() for char in content):
            Invention_Principle_list = content.split('、')

            # 打开Excel文件
            workbook = openpyxl.load_workbook(r'D:\python_demo\TRIZ经典矛盾矩阵\statics\TRIZ矛盾矩阵表.xlsx')
            # 选择工作表
            worksheet = workbook['40个发明原理']

            for item in Invention_Principle_list:
                name = worksheet.cell(row=int(item), column=1).value
                method = worksheet.cell(row=int(item), column=2).value
                example = worksheet.cell(row=int(item), column=3).value
                self.textBrowser.append("##############################################################################################")
                self.textBrowser.append("—————————————————————————原理说明————————————————————————")
                self.textBrowser.append("{}、{}:".format(item, name) + "\n" + method)
                self.textBrowser.append("——————————————————————————例子—————————————————————————")
                self.textBrowser.append(example)
                self.textBrowser.append("##############################################################################################")
                self.textBrowser.append(" ")

        # content含有"+"
        elif "+" in content:
            self.textBrowser.append("当矛盾矩阵中的某个元素为+时,表示其中一个元素在某种意义上是另一个元素的矛盾,即它们之间存在相互排斥或相反的关系。例如,在某些情况下,一个元素的存在可能意味着另一个元素的消失,或者一个元素的好可能意味着另一个元素的坏。")

        # content含有"-"
        elif "-" in content:
            self.textBrowser.append("当矛盾矩阵中的某个元素为-时,表示其中一个元素在某种意义上是另一个元素的补充或延伸,即它们之间存在相互依存或相辅相成的关系。例如,在某些情况下,一个元素的存在可能意味着另一个元素的增加或增强,或者一个元素的好可能意味着另一个元素的更好或完善。")

    except EOFError:
        self.textBrowser.append("An exception occurred while reading the invention principle!")

  在给定的代码中,函数Invention_Principle_Content接受一个参数content,并根据该参数的内容执行不同的操作。代码的主要流程是根据输入的内容(content)进行一系列判断,并根据这些判断执行特定的操作。以下是这段代码的基本流程:

  1. 接受一个输入参数content
  2. 判断content是否含有数字。如果有数字,执行以下步骤:
    • 通过split函数以’、'为分隔符将content分割成列表Invention_Principle_list
    • 打开一个Excel文件并选择工作表。
    • 遍历Invention_Principle_list列表中的每个元素(这里假设每个元素代表一个行的索引)。对于每个元素,执行以下步骤:
      • 从Excel表中获取相应的行,并从中获取名称、方法和单元格内容。
      • textBrowser中添加关于原理的说明和示例的信息。
  3. 判断content是否包含"+“。如果包含,向textBrowser中添加一段关于矛盾矩阵中”+"元素含义的说明。
  4. 判断content是否包含"-“。如果包含,向textBrowser中添加一段关于矛盾矩阵中”-"元素含义的说明。
  5. 如果在处理过程中出现EOFError异常(可能是由于输入内容非法或者其他原因引起),向textBrowser中添加一条错误消息。

三、源文件:TRIZ经典矛盾矩阵.zip

你可能感兴趣的:(python,矛盾矩阵,TRIZ,openpyxl,pyqt5)