1 Star 0 Fork 0

陈小龙/cpre

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
cpre.py 39.29 KB
一键复制 编辑 原始数据 按行查看 历史
陈小龙 提交于 2020-11-20 18:46 +08:00 . 修改算法
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
17-133行:基准退回率、下架率GUI视图编写
134-268行:直接效果评估GUI视图编写
269-399行:间接效果评估GUI视图编写
401-459页:评估结果、总体布局器GUI
462-698页:绑定取值函数、具体业务处理函数编写
"""
import sys
import wx
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title="消费品召回效果评估", size=(1000, 800))
self.Center()
panel = wx.Panel(self)
# 基准退回、下架率的静态框对象
return_shelf_benchmark_rate = wx.StaticBox(panel, label="基准退回率、下架率")
return_shelf_benchmark_rate_box = wx.StaticBoxSizer(return_shelf_benchmark_rate) # 创建水平方向的静态本文布局管理器
# 基准退回率静态框对象
return_benchmark_rate = wx.StaticBox(panel, label="基准退回率")
return_benchmark_rate_box = wx.StaticBoxSizer(return_benchmark_rate)
# 基准下架率静态框对象
shelf_benchmark_rate = wx.StaticBox(panel, label="基准下架率")
shelf_benchmark_rate_box = wx.StaticBoxSizer(shelf_benchmark_rate, wx.VERTICAL)
# 消费品固有属性静态框对象
inherent_properties_text = wx.StaticBox(panel, label="消费品固有属性")
inherent_properties_text_box = wx.StaticBoxSizer(inherent_properties_text, wx.VERTICAL)
# 消费者匹配性静态框对象
match_text = wx.StaticBox(panel, label="消费品匹配性")
match_text_box = wx.StaticBoxSizer(match_text, wx.VERTICAL)
# 创建单值静态文本和下拉按钮
single_value_text = wx.StaticText(panel, label="单值")
value_list = ['0-2000', '2000-4000', '4000-6000', '6000-8000', '8000-10000']
single_value = wx.Choice(panel, -1, choices=value_list)
self.Bind(wx.EVT_CHOICE, self.on_choice1, single_value)
# 创建水平布局器并加入单值静态文本框和下拉按钮
h_box1 = wx.BoxSizer()
h_box1.Add(single_value_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box1.Add(single_value, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建损耗比静态文本和下拉按钮
loss_rate_text = wx.StaticText(panel, label="损耗比")
loss_rate_list = ['0-1', '1-2', '2-3', '3-4', '4-5']
loss_rate = wx.Choice(panel, -1, choices=loss_rate_list)
self.Bind(wx.EVT_CHOICE, self.on_choice2, loss_rate)
# 创建水平布局器并加入损耗比静态文本框和下拉按钮
h_box2 = wx.BoxSizer()
h_box2.Add(loss_rate_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box2.Add(loss_rate, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 将h_box1和h_box2加入消费品固有属性文本布局器
inherent_properties_text_box.Add(h_box1, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
inherent_properties_text_box.Add(h_box2, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
# 创建对安全隐患的认识能力静态文本和下拉按钮
realize_ability_text = wx.StaticText(panel, label="对安全隐患的认识能力")
realize_ability_list = ['差', '较差', '一般', '较好', '好']
realize_ability = wx.Choice(panel, id=1, choices=realize_ability_list)
# 创建水平布局器并加入对安全隐患的认识能力静态文本和下拉按钮
h_box3 = wx.BoxSizer()
h_box3.Add(realize_ability_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box3.Add(realize_ability, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建接收召回信息的可能性的静态文本和下拉按钮
receive_msg_possibility_text = wx.StaticText(panel, label="接收召回信息的可能性")
receive_msg_possibility_list = ['差', '较差', '一般', '较好', '好']
receive_msg_possibility = wx.Choice(panel, id=2, choices=receive_msg_possibility_list)
# 创建水平布局器并加入接收召回信息的可能性的静态文本和下拉按钮
h_box4 = wx.BoxSizer()
h_box4.Add(receive_msg_possibility_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box4.Add(receive_msg_possibility, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建配合召回的意愿的静态文本和下拉按钮
cooperate_willing_text = wx.StaticText(panel, label="配合召回的意愿")
cooperate_willing_list = ['差', '较差', '一般', '较好', '好']
cooperate_willing = wx.Choice(panel, id=3, choices=cooperate_willing_list)
# 创建水平布局器并加入配合召回的意愿静态文本和下拉按钮
h_box5 = wx.BoxSizer()
h_box5.Add(cooperate_willing_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box5.Add(cooperate_willing, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 将h_box3、h_box4、h_box5加入消费者匹配性文本布局器
match_text_box.Add(h_box3, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
match_text_box.Add(h_box4, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
match_text_box.Add(h_box5, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
# 将消费品固有属性、消费者匹配性文本布局器加入基准退回率
return_benchmark_rate_box.Add(inherent_properties_text_box, 0, wx.EXPAND | wx.BOTTOM, border=5)
return_benchmark_rate_box.Add(match_text_box, 0, wx.EXPAND | wx.BOTTOM, border=5)
# 创建追溯体系完备性的静态文本和下拉按钮
system_complete_text = wx.StaticText(panel, label="追溯体系完备性")
system_complete_list = ['差', '较差', '一般', '较好', '好']
system_complete = wx.Choice(panel, id=4, choices=system_complete_list)
# 创建水平布局器并加入追溯体系完备性静态文本和下拉按钮
h_box6 = wx.BoxSizer()
h_box6.Add(system_complete_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box6.Add(system_complete, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建经销商召回响应度的静态文本和下拉按钮
recall_response_text = wx.StaticText(panel, label="经销商召回响应度")
recall_response_list = ['差', '较差', '一般', '较好', '好']
recall_response = wx.Choice(panel, id=5, choices=recall_response_list)
# 创建水平布局器并加入经销商召回响应度静态文本和下拉按钮
h_box7 = wx.BoxSizer()
h_box7.Add(recall_response_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box7.Add(recall_response, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 绑定对安全隐患的认识能力、接收召回信息的可能性、配合召回的意愿、追溯体系完备性、经销商召回响应度的取值
self.Bind(wx.EVT_CHOICE, self.on_choice3, id=1, id2=5)
# 创建生产者召回实力的静态文本和下拉按钮
recall_strength_text = wx.StaticText(panel, label="生产者召回实力")
recall_strength_list = ['差', '一般', '好']
recall_strength = wx.Choice(panel, -1, choices=recall_strength_list)
# 创建水平布局器并加入生产者召回实力静态文本和下拉按钮
h_box8 = wx.BoxSizer()
h_box8.Add(recall_strength_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box8.Add(recall_strength, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
self.Bind(wx.EVT_CHOICE, self.on_choice4, recall_strength)
# 将h_box6、h_box7、h_box8加入基准下架率文本布局器
shelf_benchmark_rate_box.Add(h_box6, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
shelf_benchmark_rate_box.Add(h_box7, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
shelf_benchmark_rate_box.Add(h_box8, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
# 将基准退回率静态框、基准下架率静态框加入基准退回率、下架率的静态框布局器
return_shelf_benchmark_rate_box.Add(return_benchmark_rate_box, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
return_shelf_benchmark_rate_box.Add(shelf_benchmark_rate_box, 2, flag=wx.BOTTOM | wx.EXPAND, border=10)
# 召回直接效果评估静态框对象
direct_effect_evaluate = wx.StaticBox(parent=panel, label="直接效果评估")
direct_effect_evaluate_box = wx.StaticBoxSizer(direct_effect_evaluate, wx.VERTICAL)
# 召回信息传达情况静态框对象
recall_msg_convey = wx.StaticBox(parent=panel, label="召回信息传达情况")
recall_msg_convey_box = wx.StaticBoxSizer(recall_msg_convey, wx.VERTICAL)
# 召回产品退回情况静态框对象
recall_product_return = wx.StaticBox(parent=panel, label="召回产品退回情况")
recall_product_return_box = wx.StaticBoxSizer(recall_product_return, wx.VERTICAL)
# 同一缺陷产品召回后受伤情况静态框对象
injured_situation = wx.StaticBox(parent=panel, label="同一缺陷产品召回后受伤情况")
injured_situation_box = wx.StaticBoxSizer(injured_situation, wx.VERTICAL)
# 创建消费者咨询率的静态文本和下拉按钮
consultation_rate_text = wx.StaticText(panel, label="消费者咨询率")
consultation_rate_list = ['0-0.25', '0.25-0.5', '0.5-0.75', '0.75-1.0', '1.0']
consultation_rate = wx.Choice(panel, id=6, choices=consultation_rate_list)
# 创建水平布局器并加入消费者咨询率静态文本和下拉按钮
h_box9 = wx.BoxSizer()
h_box9.Add(consultation_rate_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box9.Add(consultation_rate, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建召回信息传送率的静态文本和下拉按钮
transmission_rate_text = wx.StaticText(panel, label="召回信息传送率")
transmission_rate_list = ['0-0.25', '0.25-0.5', '0.5-0.75', '0.75-1.0', '1.0']
transmission_rate = wx.Choice(panel, id=7, choices=transmission_rate_list)
# 创建水平布局器并加入经销商召回信息传送率静态文本和下拉按钮
h_box10 = wx.BoxSizer()
h_box10.Add(transmission_rate_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box10.Add(transmission_rate, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 绑定消费者咨询率、召回信息传送率的取值
self.Bind(wx.EVT_CHOICE, self.on_choice5, id=6, id2=7)
# 将h_box9、h_box10加入召回信息传达情况布局器对象
recall_msg_convey_box.Add(h_box9, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
recall_msg_convey_box.Add(h_box10, 1, flag=wx.BOTTOM | wx.EXPAND, border=10)
# 创建经消费者静态文本框
by_consumers_text = wx.StaticText(panel, label="经消费者")
# 创建经经销商静态文本框
by_distributor_text = wx.StaticText(panel, label="经经销商")
# 创建实际退回率的静态文本和文本输入控件
actual_return_rate_text = wx.StaticText(panel, label="实际退回率")
self.actual_return_rate = wx.TextCtrl(panel, id=8)
# 创建水平布局器并加入实际退回率静态文本和文本输入控件
h_box11 = wx.BoxSizer()
h_box11.Add(actual_return_rate_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box11.Add(self.actual_return_rate, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建基准退回率的静态文本和计算得值的按钮
benchmark_return_rate_text = wx.StaticText(panel, label="基准退回率")
self.benchmark_return_rate = wx.Button(panel, id=10, label="计算基准退回率")
# 绑定计算基准退回率的点击事件
self.Bind(wx.EVT_BUTTON, self.calculate_benchmark_return_rate, id=10)
# 创建水平布局器并加入基准退回率静态文本和计算得值的静态文本
h_box12 = wx.BoxSizer()
h_box12.Add(benchmark_return_rate_text, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE, border=5)
h_box12.Add(self.benchmark_return_rate, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建一个垂直布局器,并加入h_box11和h_box12
v_box1 = wx.BoxSizer(wx.VERTICAL)
v_box1.Add(h_box11, proportion=1, flag=wx.CENTER | wx.EXPAND)
v_box1.Add(h_box12, proportion=1, flag=wx.CENTER | wx.EXPAND)
# 创建实际下架率的静态文本和文本输入控件
actual_off_shell_rate_text = wx.StaticText(panel, label="实际下架率")
self.actual_off_shell_rate = wx.TextCtrl(panel, id=9)
# 创建水平布局器并加入实际下架率静态文本和文本输入控件
h_box13 = wx.BoxSizer()
h_box13.Add(actual_off_shell_rate_text, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE, border=5)
h_box13.Add(self.actual_off_shell_rate, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建基准下架率的静态文本和计算得值的静态文本
benchmark_off_shell_rate_text = wx.StaticText(panel, label="基准下架率")
self.benchmark_off_shell_rate = wx.Button(panel, id=11, label="计算基准退回率")
# 绑定计算基准退回率的点击事件
self.Bind(wx.EVT_BUTTON, self.calculate_benchmark_off_shell_rate, id=11)
# 创建水平布局器并加入实际下架率静态文本和计算得值的静态文本
h_box14 = wx.BoxSizer()
h_box14.Add(benchmark_off_shell_rate_text, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE, border=5)
h_box14.Add(self.benchmark_off_shell_rate, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建一个垂直布局器,并加入h_box13和h_box14
v_box2 = wx.BoxSizer(wx.VERTICAL)
v_box2.Add(h_box13, proportion=1, flag=wx.CENTER | wx.EXPAND)
v_box2.Add(h_box14, proportion=1, flag=wx.CENTER | wx.EXPAND)
# 创建水平布局器并加入经消费者静态文本框和v_box1
h_box15 = wx.BoxSizer()
h_box15.Add(by_consumers_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box15.Add(v_box1, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建水平布局器并加入经经销商静态文本框和v_box2
h_box16 = wx.BoxSizer()
h_box16.Add(by_distributor_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box16.Add(v_box2, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 将h_box15和h_box16加入召回产品退回情况静态文本对象
recall_product_return_box.Add(h_box15, proportion=1, flag=wx.CENTER | wx.EXPAND)
recall_product_return_box.Add(h_box16, proportion=1, flag=wx.CENTER | wx.EXPAND)
# 创建同一缺陷召回后受伤频次的静态文本和下拉按钮
injured_frequency_text = wx.StaticText(panel, label="受伤频次")
injured_frequency_list = ['出现投诉', '未出现投诉']
injured_frequency = wx.Choice(panel, choices=injured_frequency_list)
# 绑定同一缺陷召回后受伤频次的取值
self.Bind(wx.EVT_CHOICE, self.on_choice6, injured_frequency)
# 创建水平布局器并加入同一缺陷召回后受伤频次静态文本和下拉按钮
h_box17 = wx.BoxSizer()
h_box17.Add(injured_frequency_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box17.Add(injured_frequency, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建同一缺陷召回后受伤严重程度的静态文本和下拉按钮
injured_severity_text = wx.StaticText(panel, label="严重程度")
injured_severity_list = ['致命的', '需要住院的', '无须住院的', '可逆的', '无伤害']
injured_severity = wx.Choice(panel, choices=injured_severity_list)
# 绑定同一缺陷召回后受伤严重程度的取值
self.Bind(wx.EVT_CHOICE, self.on_choice7, injured_severity)
# 创建水平布局器并加入同一缺陷召回后受伤严重程度静态文本和下拉按钮
h_box18 = wx.BoxSizer()
h_box18.Add(injured_severity_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box18.Add(injured_severity, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 将同一缺陷召回后受伤频次、严重程度加入同一缺陷产品召回后受伤情况文本对象
injured_situation_box.Add(h_box17, proportion=1, flag=wx.CENTER | wx.EXPAND)
injured_situation_box.Add(h_box18, proportion=1, flag=wx.CENTER | wx.EXPAND)
# 将召回信息传达情况、召回产品退回情况、同一缺陷产品召回后受伤情况的文本对象加入召回直接效果评估文本对象
direct_effect_evaluate_box.Add(recall_msg_convey_box, proportion=2, flag=wx.CENTER | wx.EXPAND)
direct_effect_evaluate_box.Add(recall_product_return_box, proportion=4, flag=wx.CENTER | wx.EXPAND)
direct_effect_evaluate_box.Add(injured_situation_box, proportion=2, flag=wx.CENTER | wx.EXPAND)
# 召回间接效果评估静态框对象
indirect_effect_evaluate = wx.StaticBox(parent=panel, label="间接效果评估")
indirect_effect_evaluate_box = wx.StaticBoxSizer(indirect_effect_evaluate, wx.VERTICAL)
# 各方评价静态框对象
all_comments = wx.StaticBox(parent=panel, label="各方评价")
all_comments_box = wx.StaticBoxSizer(all_comments, wx.VERTICAL)
# 生产者自身影响静态框对象
self_influence = wx.StaticBox(parent=panel, label="生产者自身影响")
self_influence_box = wx.StaticBoxSizer(self_influence, wx.VERTICAL)
# 社会性影响静态框对象
social_influence = wx.StaticBox(parent=panel, label="社会性影响")
social_influence_box = wx.StaticBoxSizer(social_influence, wx.VERTICAL)
# 创建生产者自评的静态文本和下拉按钮
producer_self_assessment_text = wx.StaticText(panel, label="生产者自评")
producer_self_assessment_list = ['较差', '一般', '较好']
producer_self_assessment = wx.Choice(panel, id=12, choices=producer_self_assessment_list)
# 创建水平布局器并加入生产者自评静态文本和下拉按钮
h_box19 = wx.BoxSizer()
h_box19.Add(producer_self_assessment_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box19.Add(producer_self_assessment, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建消费者满意度的静态文本和下拉按钮
consumer_satisfaction_text = wx.StaticText(panel, label="消费者满意度")
consumer_satisfaction_list = ['较差', '一般', '较好']
consumer_satisfaction = wx.Choice(panel, id=13, choices=consumer_satisfaction_list)
# 创建水平布局器并加入消费者满意度静态文本和下拉按钮
h_box20 = wx.BoxSizer()
h_box20.Add(consumer_satisfaction_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box20.Add(consumer_satisfaction, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建监管机构满意度的静态文本和下拉按钮
regulator_satisfaction_text = wx.StaticText(panel, label="监管机构满意度")
regulator_satisfaction_list = ['较差', '一般', '较好']
regulator_satisfaction = wx.Choice(panel, id=14, choices=regulator_satisfaction_list)
# 创建水平布局器并加入消费者满意度静态文本和下拉按钮
h_box21 = wx.BoxSizer()
h_box21.Add(regulator_satisfaction_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box21.Add(regulator_satisfaction, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 绑定生产者自评、消费者满意度、监管机构满意度取值
self.Bind(wx.EVT_CHOICE, self.on_choice8, id=12, id2=14)
# 将h_box19、h_box20、h_box21绑定到各方评价静态文本框对象
all_comments_box.Add(h_box19, proportion=1, flag=wx.CENTER | wx.EXPAND)
all_comments_box.Add(h_box20, proportion=1, flag=wx.CENTER | wx.EXPAND)
all_comments_box.Add(h_box21, proportion=1, flag=wx.CENTER | wx.EXPAND)
# 创建声誉影响的静态文本和下拉按钮
reputation_influence_text = wx.StaticText(panel, label="声誉影响")
reputation_influence_list = ['负面影响', '无影响', '正面影响']
reputation_influence = wx.Choice(panel, id=15, choices=reputation_influence_list)
# 创建水平布局器并加入声誉影响静态文本和下拉按钮
h_box22 = wx.BoxSizer()
h_box22.Add(reputation_influence_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box22.Add(reputation_influence, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建消费者未来购买意图的静态文本和下拉按钮
consumers_purchase_intention_text = wx.StaticText(panel, label="消费者未来购买意图")
consumers_purchase_intention_list = ['负面影响', '无影响', '正面影响']
consumers_purchase_intention = wx.Choice(panel, id=16, choices=consumers_purchase_intention_list)
# 创建水平布局器并加入消费者未来购买意图静态文本和下拉按钮
h_box23 = wx.BoxSizer()
h_box23.Add(consumers_purchase_intention_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE,
border=5)
h_box23.Add(consumers_purchase_intention, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 绑定声誉影响、消费者未来购买意图取值
self.Bind(wx.EVT_CHOICE, self.on_choice9, id=15, id2=16)
# 将h_box22、h_box23绑定到生产者自身影响静态文本框对象
self_influence_box.Add(h_box22, proportion=1, flag=wx.CENTER | wx.EXPAND)
self_influence_box.Add(h_box23, proportion=1, flag=wx.CENTER | wx.EXPAND)
# 创建同类产品生产者自查的静态文本和下拉按钮
producer_self_inspection_text = wx.StaticText(panel, label="生产者自查")
producer_self_inspection_list = ['无正面影响', '轻度促进作用', '高度促进作用']
producer_self_inspection = wx.Choice(panel, id=17, choices=producer_self_inspection_list)
# 创建水平布局器并加入生产者自查静态文本和下拉按钮
h_box24 = wx.BoxSizer()
h_box24.Add(producer_self_inspection_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE, border=5)
h_box24.Add(producer_self_inspection, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建行业相关标准影响的静态文本和下拉按钮
related_standards_influence_text = wx.StaticText(panel, label="行业相关标准")
related_standards_influence_list = ['无正面影响', '轻度促进作用', '高度促进作用']
related_standards_influence = wx.Choice(panel, id=18, choices=related_standards_influence_list)
# 创建水平布局器并加入行业相关标准影响静态文本和下拉按钮
h_box25 = wx.BoxSizer()
h_box25.Add(related_standards_influence_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE,
border=5)
h_box25.Add(related_standards_influence, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建同类消费品召回影响的静态文本和下拉按钮
similar_consumer_goods_influence_text = wx.StaticText(panel, label="同类消费品召回影响")
similar_consumer_goods_influence_list = ['无正面影响', '轻度促进作用', '高度促进作用']
similar_consumer_goods_influence = wx.Choice(panel, id=19, choices=similar_consumer_goods_influence_list)
# 创建水平布局器并加入同类消费品召回影响静态文本和下拉按钮
h_box26 = wx.BoxSizer()
h_box26.Add(similar_consumer_goods_influence_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE,
border=5)
h_box26.Add(similar_consumer_goods_influence, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 创建消费者召回意识影响的静态文本和下拉按钮
consumer_recall_awareness_influence_text = wx.StaticText(panel, label="消费者召回意识影响")
consumer_recall_awareness_influence_list = ['无正面影响', '轻度促进作用', '高度促进作用']
consumer_recall_awareness_influence = wx.Choice(panel, id=20, choices=consumer_recall_awareness_influence_list)
# 创建水平布局器并加入消费者召回意识影响静态文本和下拉按钮
h_box27 = wx.BoxSizer()
h_box27.Add(consumer_recall_awareness_influence_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT | wx.FIXED_MINSIZE,
border=5)
h_box27.Add(consumer_recall_awareness_influence, 1, flag=wx.CENTER | wx.ALL | wx.FIXED_MINSIZE)
# 绑定同类产品生产者自查、行业相关标准影响、同类消费品召回影响、消费者召回意识影响取值
self.Bind(wx.EVT_CHOICE, self.on_choice10, id=17, id2=20)
# 将h_box24、h_box25、h_box26、h_box27加入到社会性影响静态文本框对象
social_influence_box.Add(h_box24, proportion=1, flag=wx.CENTER | wx.EXPAND)
social_influence_box.Add(h_box25, proportion=1, flag=wx.CENTER | wx.EXPAND)
social_influence_box.Add(h_box26, proportion=1, flag=wx.CENTER | wx.EXPAND)
social_influence_box.Add(h_box27, proportion=1, flag=wx.CENTER | wx.EXPAND)
# 将各方评价、生产者自身影响、社会性影响静态框对象加入到召回间接效果评估静态文本框对象
indirect_effect_evaluate_box.Add(all_comments_box, proportion=2, flag=wx.CENTER | wx.EXPAND)
indirect_effect_evaluate_box.Add(self_influence_box, proportion=2, flag=wx.CENTER | wx.EXPAND)
indirect_effect_evaluate_box.Add(social_influence_box, proportion=4, flag=wx.CENTER | wx.EXPAND)
# 创建消费品召回效果评估结果的静态框对象
evaluate_result = wx.StaticBox(panel, label="消费品召回效果评估结果")
evaluate_result_box = wx.StaticBoxSizer(evaluate_result, wx.VERTICAL)
# 创建直接效果评估结果的静态框对象
direct_evaluate_result = wx.StaticBox(panel, label="直接效果评估结果")
direct_evaluate_result_box = wx.StaticBoxSizer(direct_evaluate_result, wx.VERTICAL)
# 创建间接效果评估结果的静态框对象
indirect_evaluate_result = wx.StaticBox(panel, label="间接效果评估结果")
indirect_evaluate_result_box = wx.StaticBoxSizer(indirect_evaluate_result, wx.VERTICAL)
# 创建总体效果评估结果的静态框对象
total_evaluate_result = wx.StaticBox(panel, label="总体效果评估结果")
total_evaluate_result_box = wx.StaticBoxSizer(total_evaluate_result, wx.VERTICAL)
# 创建生成直接效果评估结果按钮和静态文本框
self.direct_evaluate_result_text = wx.StaticText(parent=panel, label="生成结果")
button1 = wx.Button(panel, label="确定")
self.Bind(wx.EVT_BUTTON, self.on_click1, button1)
# 在直接效果评估静态框对象中加入按钮和静态本文框
direct_evaluate_result_box.Add(self.direct_evaluate_result_text, 1, flag=wx.CENTER)
direct_evaluate_result_box.Add(button1, 1, flag=wx.CENTER)
# 创建生成间接效果评估结果按钮和静态文本框
self.indirect_evaluate_result_text = wx.StaticText(parent=panel, label="生成结果")
button2 = wx.Button(panel, label="确定")
self.Bind(wx.EVT_BUTTON, self.on_click2, button2)
# 在间接效果评估静态框对象中加入按钮和静态本文框
indirect_evaluate_result_box.Add(self.indirect_evaluate_result_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT,
border=5)
indirect_evaluate_result_box.Add(button2, 1, flag=wx.CENTER)
# 创建生成总体效果评估结果按钮和静态文本框
self.total_evaluate_result_text = wx.StaticText(parent=panel, label="生成结果")
button3 = wx.Button(panel, label="确定")
self.Bind(wx.EVT_BUTTON, self.on_click3, button3)
# 在总体效果评估静态框对象中加入按钮和静态本文框
total_evaluate_result_box.Add(self.total_evaluate_result_text, 1, flag=wx.CENTER | wx.LEFT | wx.RIGHT,
border=5)
total_evaluate_result_box.Add(button3, 1, flag=wx.CENTER)
# 将直接效果评估、间接效果评估、总体效果评估静态框对象加入评估结果静态框对象
evaluate_result_box.Add(direct_evaluate_result_box, proportion=1, flag=wx.BOTTOM | wx.EXPAND, border=10)
evaluate_result_box.Add(indirect_evaluate_result_box, proportion=1, flag=wx.BOTTOM | wx.EXPAND, border=10)
evaluate_result_box.Add(total_evaluate_result_box, proportion=1, flag=wx.BOTTOM | wx.EXPAND, border=10)
# 创建水平布局器并加入召回直接效果评估、间接效果评估、消费品召回效果评估静态框对象
h_box = wx.BoxSizer()
h_box.Add(direct_effect_evaluate_box, proportion=1, flag=wx.BOTTOM | wx.EXPAND, border=10)
h_box.Add(indirect_effect_evaluate_box, proportion=1, flag=wx.BOTTOM | wx.EXPAND, border=10)
h_box.Add(evaluate_result_box, proportion=1, flag=wx.BOTTOM | wx.EXPAND, border=10)
# 总体视图显示
v_box = wx.BoxSizer(wx.VERTICAL)
v_box.Add(return_shelf_benchmark_rate_box, proportion=1, flag=wx.EXPAND | wx.BOTTOM, border=10)
v_box.Add(h_box, proportion=3, flag=wx.EXPAND, border=10)
panel.SetSizer(v_box)
def on_choice1(self, event):
# 绑定单值的取值
result = event.GetString()
if result == '0-2000':
self.single_value = 1
elif result == '2000-4000':
self.single_value = 2
elif result == '4000-6000':
self.single_value = 3
elif result == '6000-8000':
self.single_value = 4
else:
self.single_value = 5
def on_choice2(self, event):
# 绑定损耗比的取值
result = event.GetString()
if result == '0-1':
self.loss_rate = 1
elif result == '1-2':
self.loss_rate = 2
elif result == '2-3':
self.loss_rate = 3
elif result == '3-4':
self.loss_rate = 4
else:
self.loss_rate = 5
def on_choice3(self, event):
# 绑定对安全隐患的认识能力、接收召回信息的可能性、配合召回的意愿、追溯体系完备性、经销商召回响应度的取值
event_id = event.GetId()
result = event.GetString()
if result == '差':
value = 1
elif result == '较差':
value = 2
elif result == '一般':
value = 3
elif result == '较好':
value = 4
else:
value = 5
if event_id == 1:
self.realize_ability = value
elif event_id == 2:
self.receive_msg_possibility = value
elif event_id == 3:
self.cooperate_willing = value
elif event_id == 4:
self.system_complete = value
else:
self.recall_response = value
def calculate_benchmark_return_rate(self, event):
# 计算基准退回率并在静态文本框显示
try:
self.benchmark_return_rate1 = (0.2482 * self.single_value + 0.0900 * self.loss_rate +
0.2001 * self.realize_ability + 0.0823 * self.receive_msg_possibility +
0.3794 * self.cooperate_willing) / 5
self.benchmark_return_rate1 = round(self.benchmark_return_rate1, 4)
self.benchmark_return_rate.SetLabelText(str(self.benchmark_return_rate1))
except:
return
def on_choice4(self, event):
# 绑定对生产者召回实力的取值
result = event.GetString()
if result == '差':
self.recall_strength = 1
elif result == '一般':
self.recall_strength = 3
else:
self.recall_strength = 5
def calculate_benchmark_off_shell_rate(self, event):
# 计算基准下架率并在静态文本框显示
try:
self.benchmark_off_shell_rate1 = (0.2977 * self.system_complete + 0.5812 * self.recall_response +
0.1211 * self.recall_strength) / 5
self.benchmark_off_shell_rate1 = round(self.benchmark_off_shell_rate1, 4)
self.benchmark_off_shell_rate.SetLabelText(str(self.benchmark_off_shell_rate1))
except Exception as e:
return
def on_choice5(self, event):
# 绑定消费者咨询率、召回信息传送率的取值
event_id = event.GetId()
result = event.GetString()
if result == '0-0.25':
value = 1
elif result == '0.25-0.5':
value = 2
elif result == '0.5-0.75':
value = 3
elif result == '0.75-1.00':
value = 4
else:
value = 5
try:
if event_id == 6:
self.consultation_rate = value
elif event_id == 7:
self.transmission_rate = value
except:
return
def on_choice6(self, event):
# 绑定同一缺陷召回后受伤频次的取值
result = event.GetString()
if result == "出现投诉":
self.injured_frequency = 1
else:
self.injured_frequency = 5
def on_choice7(self, event):
# 绑定同一缺陷召回后受伤严重程度的取值
result = event.GetString()
if result == "致命的":
self.injured_severity = 1
elif result == "需要住院的":
self.injured_severity = 2
elif result == "无需住院的":
self.injured_severity = 3
elif result == "可逆的":
self.injured_severity = 4
else:
self.injured_severity = 5
def on_choice8(self, event):
# 绑定生产者自评、消费者满意度、监管机构满意度取值
event_id = event.GetId()
result = event.GetString()
if result == '较差':
value = 0
elif result == '一般':
value = 1
else:
value = 2
if event_id == 12:
self.producer_self_assessment = value
elif event_id == 13:
self.consumer_satisfaction = value
elif event_id == 14:
self.regulator_satisfaction = value
def on_choice9(self, event):
# 绑定声誉影响、消费者未来购买意图取值
event_id = event.GetId()
result = event.GetString()
if result == '负面影响':
value = -1
elif result == '无影响':
value = 0
else:
value = 1
if event_id == 15:
self.reputation_influence = value
elif event_id == 16:
self.consumers_purchase_intention = value
def on_choice10(self, event):
# 绑定同类产品生产者自查、行业相关标准影响、同类消费品召回影响、消费者召回意识影响取值
event_id = event.GetId()
result = event.GetString()
if result == '无正面影响':
value = 0
elif result == '轻度促进作用':
value = 1
else:
value = 2
if event_id == 17:
self.producer_self_inspection = value
elif event_id == 18:
self.related_standards_influence = value
elif event_id == 19:
self.similar_consumer_goods_influence = value
elif event_id == 20:
self.consumer_recall_awareness_influence = value
@staticmethod
def generate_score(value):
"""根据数值量化评分"""
if value >= 1:
return 5
elif value >= 0.75:
return 4
elif value >= 0.5:
return 3
elif value >= 0.25:
return 2
else:
return 1
def on_click1(self, event):
# 绑定直接效果评估静态文本的取值
try:
actual_return_rate = float(self.actual_return_rate.GetValue())
actual_off_shell_rate = float(self.actual_off_shell_rate.GetValue())
by_consumers = self.generate_score(actual_return_rate / self.benchmark_return_rate1)
by_distributor = self.generate_score(actual_off_shell_rate / self.benchmark_off_shell_rate1)
direct_evaluate = 0.0609 * self.consultation_rate + \
0.1186 * self.transmission_rate + 0.3245 * by_consumers + \
0.1242 * by_distributor + 0.1231 * self.injured_frequency + 0.2487 * self.injured_severity
direct_evaluate = round(direct_evaluate, 4)
if direct_evaluate < 2:
self.direct_result = "差"
elif direct_evaluate < 3:
self.direct_result = "一般"
elif direct_evaluate < 4:
self.direct_result = "较好"
else:
self.direct_result = "好"
self.direct_evaluate_result_text.SetLabelText(self.direct_result)
except Exception as e:
return
def on_click2(self, event):
# 绑定间接效果评估静态文本的取值
try:
indirect_value = (
self.producer_self_assessment + self.consumer_satisfaction + self.regulator_satisfaction +
self.reputation_influence + self.consumers_purchase_intention + self.producer_self_inspection +
self.related_standards_influence + self.similar_consumer_goods_influence +
self.consumer_recall_awareness_influence
)
indirect_value = round(indirect_value, 4)
if indirect_value < 4:
self.indirect_result = "差"
elif indirect_value < 10:
self.indirect_result = "一般"
else:
self.indirect_result = "好"
self.indirect_evaluate_result_text.SetLabelText(self.indirect_result)
except:
return
def on_click3(self, event):
# 绑定总体效果评估静态文本的取值
try:
if self.indirect_result == "差":
comprehensive_result = "不理想,进入召回管理工作评估"
else:
if self.direct_result == "好":
comprehensive_result = "理想,总结召回实施经验"
elif self.direct_result == "较好":
comprehensive_result = "较理想,整理分析提升措施"
else:
comprehensive_result = "不理想,进入召回管理工作评估"
self.total_evaluate_result_text.SetLabelText(comprehensive_result)
except:
return
class App(wx.App):
def OnInit(self):
frame = MyFrame()
frame.Show()
return True
def OnExit(self):
"""退出系统"""
self.Destroy()
sys.exit(0)
if __name__ == '__main__':
app = App()
app.MainLoop()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/ascend-cxl/cpre.git
git@gitee.com:ascend-cxl/cpre.git
ascend-cxl
cpre
cpre
master

搜索帮助