TRIZ经典矛盾矩阵.exe
- 一、概要
- 二、技术细节
- I.函数open_dialog()和open_version_dialog()
- II.函数resolvent()
- III.函数Invention_Principle_Content()
- 三、源文件:[TRIZ经典矛盾矩阵.zip](https://download.csdn.net/download/weixin_46153372/88797934)
一、概要
这是一款基于pyqt5开发的用于查询TRIZ经典矛盾矩阵的软件。
矛盾矩阵是一种工具,可以帮助人们解决技术创新过程中遇到的各种矛盾。它最早由阿奇舒勒先生在1970年提出,后来经过其他人的不断发展和完善,现在已经成为一套比较成熟的理论和方法体系。
矛盾矩阵的作用是提供一种系统性检索入口,根据系统的改善参数和恶化参数,找到解决特定类型技术矛盾的发明原理。它可以通过分析技术系统中的矛盾,并利用矩阵的形式表达各元素之间的矛盾关系,从而帮助人们更好地理解和解决这些矛盾。使用矛盾矩阵的方法如下:
- 确定技术系统中的矛盾:首先需要明确技术系统中存在的矛盾,这可以通过分析系统的功能、性能、成本等方面来确定。
- 确定通用工程参数:技术系统中的矛盾通常可以用一些通用工程参数来描述,例如:强度、硬度、稳定性等等。需要根据矛盾确定需要关注的通用工程参数。
- 构建矛盾矩阵:根据确定的需要关注的通用工程参数以及其他相关因素,构建一个矛盾矩阵。该矩阵中包含了各种可能的矛盾关系,以及解决这些矛盾的发明原理。
- 检索发明原理:在矛盾矩阵中,可以系统性地检索可以解决特定矛盾的发明原理。可以根据矩阵中提供的检索入口,快速找到可能解决问题的发明原理。
- 应用发明原理:在检索到可能解决问题的发明原理后,可以将其应用到实际的技术系统中,尝试解决存在的矛盾。
在使用矛盾矩阵时,需要注意的是,它只是一种工具,不能保证一定能解决问题。但是,通过矛盾矩阵提供的信息和指导,可以帮助人们更有效地发现和解决技术系统中的矛盾。
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_dialog
和open_version_dialog
)的流程看起来比较简单。下面是基于这些代码的分析:
-
open_dialog
函数:- 创建一个名为
Instructions_Dialog
的对话框实例,这个对话框包含一些使用说明和指导信息。 - 通过调用
exec_()
方法来显示这个对话框,并等待用户的响应。这个方法会阻塞当前线程,直到用户关闭对话框。
- 创建一个名为
-
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))
整体架构流程可以归纳为以下几点:
- 在一个名为
resolvent
的方法中,首先清除了textBrowser
中的任何先前的内容。 - 然后调用
greetings
函数来显示一些问候语。 - 定义了一个名为
data_dict
的字典,其中包含一些关键词和其对应的数值。 - 打开一个Excel文件并选择一个工作表。
- 根据用户从两个下拉菜单(
self.improve_parameter_comboBox.currentText()
和self.deterioration_parameters_comboBox.currentText()
)选择的参数名,从Excel表中读取对应的单元格内容。 - 然后,这个读取的值被添加到
textBrowser
中,显示给用户。 - 接下来,使用从Excel表中读取的值作为参数调用
Invention_Principle_Content
函数。 - 如果在上述过程中发生
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
)进行一系列判断,并根据这些判断执行特定的操作。以下是这段代码的基本流程:
- 接受一个输入参数
content
。 - 判断
content
是否含有数字。如果有数字,执行以下步骤:- 通过
split
函数以’、'为分隔符将content
分割成列表Invention_Principle_list
。 - 打开一个Excel文件并选择工作表。
- 遍历
Invention_Principle_list
列表中的每个元素(这里假设每个元素代表一个行的索引)。对于每个元素,执行以下步骤:- 从Excel表中获取相应的行,并从中获取名称、方法和单元格内容。
- 向
textBrowser
中添加关于原理的说明和示例的信息。
- 通过
- 判断
content
是否包含"+“。如果包含,向textBrowser
中添加一段关于矛盾矩阵中”+"元素含义的说明。 - 判断
content
是否包含"-“。如果包含,向textBrowser
中添加一段关于矛盾矩阵中”-"元素含义的说明。 - 如果在处理过程中出现
EOFError
异常(可能是由于输入内容非法或者其他原因引起),向textBrowser
中添加一条错误消息。