运行效果图

最近重构了代码,主要是功能拆分,去掉以前写的臃肿的代码

import wx                                                       # 导入wxPythonclass ResistancePanel(wx.Panel):def __init__(self,parent,id,isFive):wx.Panel.__init__(self,parent,id)self.isFive = isFiveself.SetSize(540,50)self.SetPosition((20,340))self.create_resistance()def create_resistance(self):left_pin = wx.StaticText(self, pos=(0, 20), size=(150, 5))left_pin.SetBackgroundColour('white')body = wx.StaticText(self, pos=(150, 0), size=(240, 50))body.SetBackgroundColour('light blue')right_pin = wx.StaticText(self, pos=(390, 20), size=(150, 5))right_pin.SetBackgroundColour('white')self.colorSpans = []defaultColors = ['black','black','black','black','black'] if self.isFive else \['black', 'black', 'brown', 'black']self.updateColorSpans(defaultColors)def createColorSpan(self,colorValues):limit = 5 if self.isFive else 4for i in range(limit):if self.isFive:pos = (180+40*i,0)else:pos = (180 + 50 * i, 0)# 如果创建的时候不带文字,会直接不显示colorSpan = wx.StaticText(self, -1, 'resistance', pos=pos, size=(30, 50))colorSpan.SetBackgroundColour(colorValues[i])colorSpan.SetLabel('')self.colorSpans.append(colorSpan)def updateColorSpans(self,colorValues):if len(self.colorSpans) > 0:for i in self.colorSpans:# 必须先销毁,再创建,不能直接修改背景色i.Destroy()self.colorSpans = []self.createColorSpan(colorValues)class MyFrame(wx.Frame):def __init__(self,parent,id):wx.Frame.__init__(self, parent, id, "色环电阻计算器2.0",size=(600,450),pos=(2200,500))self.panel = wx.Panel(self)self.font1 = wx.Font(20,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL,faceName="黑体")self.font2 = wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL,faceName="黑体")self.choices = ['黑', '棕', '红', '橙', '黄', '绿', '蓝', '紫', '灰', '白', '金', '银']self.choices2 = ['黑', '棕', '红', '绿', '蓝', '紫', '灰', '金', '银']self.colorDict = {'黑': 'black', '棕': 'brown', '红': 'red', '橙': 'coral', '黄': 'yellow', '绿': 'green', '蓝': 'blue', '紫': 'purple','灰': 'grey', '白': 'white', '金': 'gold', '银': 'light grey'}self.error_code = ['20', '1', '2', '0.5', '0.25', '0.1', '0.05', '5', '10']self.isFive = Trueself.radioBoxes = []self.init_Panel()def init_Panel(self):self.create_display_part()self.bt_change = wx.Button(self.panel, label=f'切换为{5 if self.isFive else 4}色环', pos=(400, 250), size=(150, 50))self.bt_change.SetFont(self.font2)self.bt_change.Bind(wx.EVT_BUTTON, self.Event_change)self.create_radio_panel()self.resistancePanel = ResistancePanel(self.panel, -1,self.isFive)def Event_change(self,event):self.bt_change.SetLabel(f'切换为{5 if self.isFive else 4}色环')# 标志位取反self.isFive = not self.isFiveself.resistancePanel = ResistancePanel(self,-1,self.isFive)self.create_radio_panel()def Event_radioBox(self,event):rbIndexes = [];self.colorNames = []colorRange = 5 if self.isFive else 4for i in range(colorRange):target = self.radioBoxes[i]selection = target.GetSelection()rbIndexes.append(selection)self.colorNames.append(self.colorDict[target.GetStringSelection()])if self.isFive == True:if rbIndexes[3] > 9:temp = 9 - rbIndexes[3]else:temp = rbIndexes[3]result = (rbIndexes[0] * 100 + rbIndexes[1] * 10 + rbIndexes[2]) * (pow(10, temp))error = self.error_code[rbIndexes[4]]else:if self.rbIndexes[2] > 8:temp = 8 - rbIndexes[2]else:temp = rbIndexes[2] + 1result = (rbIndexes[0] * 10 + rbIndexes[1]) * (pow(10, temp))error = self.error_code[rbIndexes[3]]self.display(result, error)self.resistancePanel.updateColorSpans(self.colorNames)def create_display_part(self):label_resistance = wx.StaticText(self.panel, label="阻值:",pos=(400,25))label_error = wx.StaticText(self.panel, label="误差:±",pos=(400,125))label_error.SetFont(self.font2)label_percentage = wx.StaticText(self.panel, label="%",pos=(520,150))self.label_ohm = wx.StaticText(self.panel, label="Ω", pos=(520, 50))self.label_ohm.SetFont(self.font2)self.text_resistance = wx.TextCtrl(self.panel, value='0.00',pos=(400, 50), style=wx.TE_RIGHT | wx.TE_READONLY)self.text_error = wx.TextCtrl(self.panel, value='20',pos=(400, 150), style=wx.TE_RIGHT | wx.TE_READONLY)label_resistance.SetFont(self.font2)label_percentage.SetFont(self.font2)self.text_resistance.SetFont(self.font2)self.text_error.SetFont(self.font2)self.text_resistance.SetBackgroundColour('white')self.text_error.SetBackgroundColour('white')def create_radio_panel(self):if len(self.radioBoxes) > 0:for i in self.radioBoxes:i.Destroy()self.radioBoxes = []if self.isFive:self.radioBoxes = [self.create_radioBox('1', 0, self.choices[:-2]),self.create_radioBox('2', 75, self.choices[:-2]),self.create_radioBox('3', 150, self.choices[:-2]),self.create_radioBox('4', 225, self.choices),self.create_radioBox('5', 300, self.choices2)]else:self.radioBoxes = [self.create_radioBox('1', 0, self.choices[:-2]),self.create_radioBox('2', 100, self.choices[:-2]),self.create_radioBox('3', 200, self.choices[1:]),self.create_radioBox('4', 300, self.choices2),]def create_radioBox(self, index, abscissa, choices):radioBox = wx.RadioBox(self.panel, -1, f'第{index}位', (abscissa,0), choices=choices, majorDimension=1)radioBox.Bind(wx.EVT_RADIOBOX, self.Event_radioBox)return radioBoxdef display(self,a,b):if a>=1000000:a="%.2f"%(a/1000000)self.label_ohm.SetLabel('MΩ')elif 1000<=a<=1000000:a="%.2f"%(a/1000)self.label_ohm.SetLabel('KΩ')else:a="%.2f"%(a)self.label_ohm.SetLabel('Ω')self.text_resistance.SetValue(a)self.text_error.SetValue(b)if __name__ =='__main__':app = wx.App()frame = MyFrame(None,-1)frame.Show()app.MainLoop()

wxPython色环电阻计算器相关推荐

  1. 巨坑!同事离职前一天,偷偷将一个470欧的色环电阻串进我的电源线中......

    作者:晓宇,排版:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 1.大自然的三极管模型,小电流"控制"大电流,网友直呼,一图解开了我多年的疑惑,不过,还是下面的水龙头 ...

  2. 色环电阻的电阻值大小的确定

    每种颜色代表不同的数字,如下: 棕1 红2 橙3 黄4 绿5 蓝6 紫7 灰8 白9 黑0 ,金.银表示误差 色环电阻是应用于各种电子设备的最多的电阻类型,无论怎样安装,维修者都能方便的读出其阻值,便 ...

  3. 一文带你了解,色环电阻失效相关知识

    一.色环电阻是什么 色环电阻是电子电路中最常用的电子元件,它在表面用不同颜色的色环来区分电阻的阻值大小. 二.如何识认色环电阻 平常使用的色环电阻可以分为四环和五环.其中四环电阻前两环为数字,第三环表 ...

  4. 关于色环电阻的读数和功率

    1.色环电阻的读数 三色环电阻 第一色环是十位数,第二色环是个位数,第三色环代表倍率.用前三个色环来代表其阻值,如:39Ω,39KΩ,39MΩ. 四色环电阻 四个色环电阻的识别:第一.二环分别代表两位 ...

  5. 色环电阻的识别和检测

    电阻器的识别和检测-色标法 2007年02月08日 星期四 16:58 色标法是指不同颜色表示元件不同参数的方法. 在电阻器上,不同的颜色代表不同的标称值和偏差色标法可以分为:色环法和色点法.其中,最 ...

  6. 色环电阻是如何读取其标识的?

    在使用电阻时必须知道怎么识别电阻的大小,每个电阻上都有色环,可以根据色环法来读取电阻的大小,以下总结了电阻的识别方法,供大家学习参考. 电阻识别方法 用色环法可以识别电阻的大小,色环法就是用不同颜色的 ...

  7. 电阻色环表_色环电阻识别方法

    色环电阻 色环电阻是电子电路中最常用的电子元件,色环电阻就是在普通的电阻封装上涂上不一样的颜色的色环,用来区分电阻的阻值.保证在安装电阻时不管从什么方向来安装,都可以清楚的读出它的阻值.色环电阻的基本 ...

  8. Python实现电阻计算器——快速计算电阻值

    Python实现电阻计算器--快速计算电阻值 在电子工程领域,电阻器是一种常用的电路元件,而对于电阻值的计算也是非常重要的.本文将介绍如何使用Python编写一个简单的电阻计算器,以帮助电子工程爱好者 ...

  9. 一文教你快速理解什么是色环电阻识别方法

    色环电阻是一种电子元件,其主要用途是在电路中提供特定的电阻值.它通常由一条导体线或薄膜组成,其阻值取决于导体线或薄膜的材料.几何形状和长度.通过在电阻上涂上不同颜色的环,可以直观地识别电阻值和误差. ...

  10. 色环电阻的阻值如何识别

    这种是色环电阻,其外表有一圈圈不同颜色的色环,现在在一些电器和电源电路中还有使用. 下面的两种色环电阻它颜色还不一样,一个蓝色,一个土黄色,其实这个蓝色的属于金属膜色环电阻,外表涂的是一层金属膜,这个 ...

最新文章

  1. CommunityServer读取Blog分析(一)
  2. 没有run窗口_学会了面向对象,还怕没有对象?
  3. jquery.dataTables.min.js:62 Uncaught TypeError: Cannot read property ‘style‘ of undefined原因
  4. SpringBoot 自动装配原理
  5. linux下监控磁盘空间脚本
  6. 撩课-Web大前端每天5道面试题-Day4
  7. 巴克码信号处理的计算机仿真,单码道绝对编码信号处理建模与仿真
  8. Linux中编译mdio命令,linux网络设备—mdio总线
  9. 北京地区研究生学位英语(GET)词汇
  10. mysql auto_increment 原理_MySQL auto_increment间隙问题
  11. 大学生应该读什么书——一位年轻老师给他的年轻学生的一封回信
  12. kibana.bat文件闪退问题
  13. 唐宇迪学习笔记4:Python可视化库——Seaborn
  14. 永中软件自己越描越黑
  15. win7下安装anaconda3
  16. 【CSS】通过定位修改 display 显示模式 ( Display 显示模式转换 | inline-block 改块元素为行内块元素示例 | 为块元素设置浮动 | 为块元素设置定位 )
  17. botpress搭建智能问答机器人
  18. 编译原理 —— 短语、直接短语、素短语和句柄
  19. 【转】第三方支付风控体系
  20. tableau-RFM模型

热门文章

  1. Google Code Prettify,代码高亮的JS库
  2. 《电脑商情报》国内信号最强,有效距离最远的四种无线网卡
  3. 卡巴斯基2010激活码
  4. CMMB手机电视自毁长城?
  5. 北大青鸟网络工程师benet培训招生问答
  6. [黑客入门]花无涯新手入门教程笔记
  7. VMware Fusion网络配置相关原理
  8. leapftp 3.0.1使用教程,leapftp 3.0.1使用教程图解
  9. 康佳电视应用助手服务器连接超时,康佳电视程序无响应怎么办?详细解决方法...
  10. 2022年更新正大杯获得国家二等奖经验优秀报告资料分享全国大学生市场调查与分析大赛市调大赛保研竞赛加分怎么找队友等全套经验分享