当前位置: 首页 > news >正文

rp做网站原型要缩小尺寸吗网页美工设计师就业能力要求

rp做网站原型要缩小尺寸吗,网页美工设计师就业能力要求,就业指导中心网站建设总结,三站合一网站建设方案上一篇#xff1a;Python小试牛刀#xff1a;GUI#xff08;图形界面#xff09;实现计算器UI界面(二)-CSDN博客 回顾前两篇文章#xff0c;第一篇文章主要实现了计算器UI界面如何布局#xff0c;以及简单概述Python常用的GUI库。第二篇文章主要实现了计算器UI界面按钮组…上一篇Python小试牛刀GUI图形界面实现计算器UI界面(二)-CSDN博客 回顾前两篇文章第一篇文章主要实现了计算器UI界面如何布局以及简单概述Python常用的GUI库。第二篇文章主要实现了计算器UI界面按钮组件与事件的交互而在本片文章则是实现计算器完整功能。 运行结果 代码设计 计算器 # 通配符* __all__ [main]# 计算器UI设计 class CalculatorUI:import tkinter as tkfrom tkinter import fontbase tk.Tk() # 新建窗口base.title(计算器) # 设置标题base.geometry(458x400) # 设置窗口像素大小# 全局变量labelData1 tk.StringVar() # 标签数据labelData2 tk.StringVar() # 标签数据# 设置字体样式setChineseFont font.Font(familyArial, size20, weightbold)setFont font.Font(familyHelvetica, size12, weightbold)# 主框架mainFrame tk.LabelFrame(base, text标准, borderwidth2, relieftk.FLAT, fontsetChineseFont)mainFrame.pack(expandTrue)# 标签框架labelFrame tk.Frame(mainFrame, borderwidth2, relieftk.GROOVE)labelFrame.grid(columnspan4)# 标签showLabel1 tk.Label(labelFrame, textvariablelabelData1, anchore, width26, fontsetChineseFont)showLabel1.pack()showLabel2 tk.Label(labelFrame, textvariablelabelData2, anchore, width26, fontsetChineseFont)showLabel2.pack()# 删除按钮clear tk.Button(mainFrame, textC, width10, height2, fontsetFont)clear.grid(row1, column0)# 退格按钮backSpace tk.Button(mainFrame, text⬅, width10, height2, fontsetFont)backSpace.grid(row1, column1)# 余数百分号remainder tk.Button(mainFrame, text%, width10, height2, fontsetFont)remainder.grid(row1, column2)# 除号division tk.Button(mainFrame, text➗, width10, height2, fontsetFont)division.grid(row1, column3)# 7seven tk.Button(mainFrame, text7, width10, height2, fontsetFont)seven.grid(row2, column0)# 8eight tk.Button(mainFrame, text8, width10, height2, fontsetFont)eight.grid(row2, column1)# 9nine tk.Button(mainFrame, text9, width10, height2, fontsetFont)nine.grid(row2, column2)# 乘号multiplication tk.Button(mainFrame, text✖, width10, height2, fontsetFont)multiplication.grid(row2, column3)# 4four tk.Button(mainFrame, text4, width10, height2, fontsetFont)four.grid(row3, column0)# 5five tk.Button(mainFrame, text5, width10, height2, fontsetFont)five.grid(row3, column1)# 6six tk.Button(mainFrame, text6, width10, height2, fontsetFont)six.grid(row3, column2)# 减法subtraction tk.Button(mainFrame, text➖, width10, height2, fontsetFont)subtraction.grid(row3, column3)# 1one tk.Button(mainFrame, text1, width10, height2, fontsetFont)one.grid(row4, column0)# 2two tk.Button(mainFrame, text2, width10, height2, fontsetFont)two.grid(row4, column1)# 3three tk.Button(mainFrame, text3, width10, height2, fontsetFont)three.grid(row4, column2)# 加法addition tk.Button(mainFrame, text➕, width10, height2, fontsetFont)addition.grid(row4, column3)# 括号brackets tk.Button(mainFrame, text( ), width10, height2, fontsetFont)brackets.grid(row5, column0)# 0zero tk.Button(mainFrame, text0, width10, height2, fontsetFont)zero.grid(row5, column1)# 小数点.dit tk.Button(mainFrame, text., width10, height2, fontsetFont)dit.grid(row5, column2)# 等于equal tk.Button(mainFrame, text, width10, height2, background#00BFFF, fontsetFont)equal.grid(row5, column3)# 按钮间距tk.Label(mainFrame, height3, width1).grid(row1, column4) # 行填充tk.Label(mainFrame, height3, width1).grid(row2, column4)tk.Label(mainFrame, height3, width1).grid(row3, column4)tk.Label(mainFrame, height3, width1).grid(row4, column4)tk.Label(mainFrame, height3, width1).grid(row5, column4)tk.Label(mainFrame, height1, width16).grid(row6, column1) # 列填充tk.Label(mainFrame, height1, width16).grid(row6, column3)# 初始化事件 def initUI(event):# 0-9UI.zero.config(background#f0f0f0) # 0UI.one.config(background#f0f0f0) # 1UI.two.config(background#f0f0f0) # 2UI.three.config(background#f0f0f0) # 3UI.four.config(background#f0f0f0) # 4UI.five.config(background#f0f0f0) # 5UI.six.config(background#f0f0f0) # 6UI.seven.config(background#f0f0f0) # 7UI.eight.config(background#f0f0f0) # 8UI.nine.config(background#f0f0f0) # 9# 特殊字符UI.clear.config(background#f0f0f0) # 删除UI.backSpace.config(background#f0f0f0) # 退格UI.remainder.config(background#f0f0f0) # 百分号/求余UI.division.config(background#f0f0f0) # 除号UI.multiplication.config(background#f0f0f0) # 乘号UI.subtraction.config(background#f0f0f0) # 减号UI.addition.config(background#f0f0f0) # 加号UI.equal.config(background#00BFFF) # 等于UI.brackets.config(background#f0f0f0) # 括号UI.dit.config(background#f0f0f0) # 小数点# 鼠标在组件上的焦点事件 # 0-9 # 0 def zeroBackground(event):UI.zero.config(backgroundpink) def zeroReleaseBackground(event):UI.zero.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.zero.config(statetk.NORMAL, background#f0f0f0)zeroEvent(event) # 1 def oneBackground(event):UI.one.config(backgroundpink) def oneReleaseBackground(event):UI.one.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.one.config(statetk.NORMAL, background#f0f0f0)oneEvent(event) # 2 def twoBackground(event):UI.two.config(backgroundpink) def twoReleaseBackground(event):UI.two.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.two.config(statetk.NORMAL, background#f0f0f0)twoEvent(event) # 3 def threeBackground(event):UI.three.config(backgroundpink) def threeReleaseBackground(event):UI.three.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.three.config(statetk.NORMAL, background#f0f0f0)threeEvent(event) # 4 def fourBackground(event):UI.four.config(backgroundpink) def fourReleaseBackground(event):UI.four.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.four.config(statetk.NORMAL, background#f0f0f0)fourEvent(event) # 5 def fiveBackground(event):UI.five.config(backgroundpink) def fiveReleaseBackground(event):UI.five.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.five.config(statetk.NORMAL, background#f0f0f0)fiveEvent(event) # 6 def sixBackground(event):UI.six.config(backgroundpink) def sixReleaseBackground(event):UI.six.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.six.config(statetk.NORMAL, background#f0f0f0)sixEvent(event) # 7 def sevenBackground(event):UI.seven.config(backgroundpink) def sevenReleaseBackground(event):UI.seven.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.seven.config(statetk.NORMAL, background#f0f0f0)sevenEvent(event) # 8 def eightBackground(event):UI.eight.config(backgroundpink) def eightReleaseBackground(event):UI.eight.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.eight.config(statetk.NORMAL, background#f0f0f0)eightEvent(event) # 9 def nineBackground(event):UI.nine.config(backgroundpink) def nineReleaseBackground(event):UI.nine.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.nine.config(statetk.NORMAL, background#f0f0f0)nineEvent(event)# 特殊字符 # 删除 def clearBackground(event):UI.clear.config(backgroundpink) def clearReleaseBackground(event):UI.clear.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.clear.config(statetk.NORMAL, background#f0f0f0)clearEvent(event) # 退格 def backSpaceBackground(event):UI.backSpace.config(backgroundpink) def backSpaceReleaseBackground(event):UI.backSpace.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.backSpace.config(statetk.NORMAL, background#f0f0f0)backSpaceEvent(event) # 百分号/求余 def remainderBackground(event):UI.remainder.config(backgroundpink) def remainderReleaseBackground(event):UI.remainder.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.remainder.config(statetk.NORMAL, background#f0f0f0)remainderEvent(event) # 除号 def divisionBackground(event):UI.division.config(backgroundpink) def divisionReleaseBackground(event):UI.division.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.division.config(statetk.NORMAL, background#f0f0f0)divisionEvent(event) # 乘号 def multiplicationBackground(event):UI.multiplication.config(backgroundpink) def multiplicationReleaseBackground(event):UI.multiplication.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.multiplication.config(statetk.NORMAL, background#f0f0f0)multiplicationEvent(event) # 减号 def subtractionBackground(event):UI.subtraction.config(backgroundpink) def subtractionReleaseBackground(event):UI.subtraction.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.subtraction.config(statetk.NORMAL, background#f0f0f0)subtractionEvent(event) # 加号 def additionBackground(event):UI.addition.config(backgroundpink) def additionReleaseBackground(event):UI.addition.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.addition.config(statetk.NORMAL, background#f0f0f0)additionEvent(event) # 等于 def equalBackground(event):UI.equal.config(backgroundpink) def equalReleaseBackground(event):UI.equal.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.equal.config(statetk.NORMAL, background#00BFFF)equalEvent(event) # 括号 def bracketsBackground(event):UI.brackets.config(backgroundpink) def bracketsReleaseBackground(event):UI.brackets.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.brackets.config(statetk.NORMAL, background#f0f0f0)bracketsEvent(event) # 小数点 def ditBackground(event):UI.dit.config(backgroundpink) def ditReleaseBackground(event):UI.dit.config(statetk.DISABLED, backgroundpink)UI.base.update()time.sleep(0.1)UI.dit.config(statetk.NORMAL, background#f0f0f0)ditEvent(event)# 组件背景颜色事件触发 def widgetColor():# 初始化UI.base.bind(Leave, initUI)UI.showLabel1.config(foregroundgray, backgroundwhite)UI.showLabel2.config(backgroundwhite)# 0-9UI.zero.bind(Motion, zeroBackground) # 0UI.one.bind(Motion, oneBackground) # 1UI.two.bind(Motion, twoBackground) # 2UI.three.bind(Motion, threeBackground) # 3UI.four.bind(Motion, fourBackground) # 4UI.five.bind(Motion, fiveBackground) # 5UI.six.bind(Motion, sixBackground) # 6UI.seven.bind(Motion, sevenBackground) # 7UI.eight.bind(Motion, eightBackground) # 8UI.nine.bind(Motion, nineBackground) # 9# 特殊字符UI.clear.bind(Motion, clearBackground) # 删除UI.backSpace.bind(Motion, backSpaceBackground) # 退格UI.remainder.bind(Motion, remainderBackground) # 百分号/求余UI.division.bind(Motion, divisionBackground) # 除号UI.multiplication.bind(Motion, multiplicationBackground) # 乘号UI.subtraction.bind(Motion, subtractionBackground) # 减号UI.addition.bind(Motion, additionBackground) # 加号UI.equal.bind(Motion, equalBackground) # 等于UI.brackets.bind(Motion, bracketsBackground) # 括号UI.dit.bind(Motion, ditBackground) # 小数点# 按钮按下UI.base.bind(KeyPress-0, zeroReleaseBackground) # 0UI.zero.bind(Button-1, zeroEvent)UI.base.bind(KeyPress-1, oneReleaseBackground) # 1UI.one.bind(Button-1, oneEvent)UI.base.bind(KeyPress-2, twoReleaseBackground) # 2UI.two.bind(Button-1, twoEvent)UI.base.bind(KeyPress-3, threeReleaseBackground) # 3UI.three.bind(Button-1, threeEvent)UI.base.bind(KeyPress-4, fourReleaseBackground) # 4UI.four.bind(Button-1, fourEvent)UI.base.bind(KeyPress-5, fiveReleaseBackground) # 5UI.five.bind(Button-1, fiveEvent)UI.base.bind(KeyPress-6, sixReleaseBackground) # 6UI.six.bind(Button-1, sixEvent)UI.base.bind(KeyPress-7, sevenReleaseBackground) # 7UI.seven.bind(Button-1, sevenEvent)UI.base.bind(KeyPress-8, eightReleaseBackground) # 8UI.eight.bind(Button-1, eightEvent)UI.base.bind(KeyPress-9, nineReleaseBackground) # 9UI.nine.bind(Button-1, nineEvent)UI.base.bind(KeyPress-Delete, clearReleaseBackground) # 删除UI.base.bind(KeyPress-c, clearReleaseBackground) # 删除UI.base.bind(Key-C, clearReleaseBackground) # 删除UI.clear.bind(Button-1, clearEvent)UI.base.bind(KeyPress-BackSpace, backSpaceReleaseBackground) # 退格UI.backSpace.bind(Button-1, backSpaceEvent)UI.base.bind(Shift-Key-%, remainderReleaseBackground) # 百分号、求余UI.remainder.bind(Button-1, remainderEvent)UI.base.bind(KeyPress-slash, divisionReleaseBackground) # 除号UI.division.bind(Button-1, divisionEvent)UI.base.bind(KeyPress-asterisk, multiplicationReleaseBackground) # 乘号UI.base.bind(Shift-Key-*, multiplicationReleaseBackground) # 乘号UI.multiplication.bind(Button-1, multiplicationEvent)UI.base.bind(KeyPress-minus, subtractionReleaseBackground) # 减号UI.subtraction.bind(Button-1, subtractionEvent)UI.base.bind(KeyPress-plus, additionReleaseBackground) # 加号UI.base.bind(Shift-Key-, additionReleaseBackground) # 加号UI.addition.bind(Button-1, additionEvent)UI.base.bind(KeyPress-Return, equalReleaseBackground) # 等号UI.base.bind(KeyPress-equal, equalReleaseBackground) # 等号UI.equal.bind(Button-1, equalEvent)UI.base.bind(Shift-Key-(, bracketsReleaseBackground) # 左括号UI.base.bind(Shift-Key-), bracketsReleaseBackground) # 右括号UI.brackets.bind(Button-1, bracketsEvent)UI.base.bind(KeyPress-period, ditReleaseBackground) # 小数点UI.dit.bind(Button-1, ditEvent)# 0 事件 def zeroEvent(event):global labelShow2# 数字前面不能是右括号)if (原来是小瘪三labelShow2)[-1] in ):returnlabelShow2 0# 补小数点if labelShow2 0 or labelShow2[-2] in (-×÷:labelShow2 .UI.labelData2.set(labelShow2)UI.zero.config(activeforegroundgray)# 1 事件 def oneEvent(event):global labelShow2# 数字前面不能是右括号)if (防止空字符labelShow2)[-1] in ):returnlabelShow2 1UI.labelData2.set(labelShow2)UI.one.config(activeforegroundgray)# 2 事件 def twoEvent(event):global labelShow2# 数字前面不能是右括号)if (什么字符都可以labelShow2)[-1] in ):returnlabelShow2 2UI.labelData2.set(labelShow2)UI.two.config(activeforegroundgray)# 3 事件 def threeEvent(event):global labelShow2# 数字前面不能是右括号)if (不影响代码labelShow2)[-1] in ):returnlabelShow2 3UI.labelData2.set(labelShow2)UI.three.config(activeforegroundgray)# 4 事件 def fourEvent(event):global labelShow2# 数字前面不能是右括号)if (虽然可以封装成函数labelShow2)[-1] in ):returnlabelShow2 4UI.labelData2.set(labelShow2)UI.four.config(activeforegroundgray)# 5 事件 def fiveEvent(event):global labelShow2# 数字前面不能是右括号)if (但是只有两行代码labelShow2)[-1] in ):returnlabelShow2 5UI.labelData2.set(labelShow2)UI.five.config(activeforegroundgray)# 6 事件 def sixEvent(event):global labelShow2# 数字前面不能是右括号)if (调用函数还是两行代码labelShow2)[-1] in ):returnlabelShow2 6UI.labelData2.set(labelShow2)UI.six.config(activeforegroundgray)# 7 事件 def sevenEvent(event):global labelShow2# 数字前面不能是右括号)if (索性来个自我介绍吧labelShow2)[-1] in ):returnlabelShow2 7UI.labelData2.set(labelShow2)UI.seven.config(activeforegroundgray)# 8 事件 def eightEvent(event):global labelShow2# 数字前面不能是右括号)if (我是周华2022labelShow2)[-1] in ):returnlabelShow2 8UI.labelData2.set(labelShow2)UI.eight.config(activeforegroundgray)# 9 事件 def nineEvent(event):global labelShow2# 数字前面不能是右括号)if (欢迎大家关注labelShow2)[-1] in ):returnlabelShow2 9UI.labelData2.set(labelShow2)UI.nine.config(activeforegroundgray)# 删除 事件 def clearEvent(event):global labelShow2, operator, operationData, bracketsFlag# 数据初始化bracketsFlag 0labelShow2 operator []operationData []UI.labelData2.set(labelShow2)UI.clear.config(activeforegroundgray)# 退格 事件 def backSpaceEvent(event):global labelShow2# 在数据内退格if not operator:labelShow2 labelShow2[:-1:]# 运算符退格elif operator and operationData:if labelShow2[-1] in -×÷%:operator.pop()operationData.pop()labelShow2 labelShow2[:-1:]UI.labelData2.set(labelShow2)UI.backSpace.config(activeforegroundgray)# 求余 事件 def remainderEvent(event):global labelShow2# 首个字符不能出现百分号/求余if not labelShow2:return# 百分号前面不能出现运算符除了右括号)elif labelShow2[-1] in -×÷%(.:return# 分割数据,获取数值和运算符elif not operator:operationData.append(labelShow2)elif operator:operationData.append(labelShow2.split(operationData[-1] operator[-1])[-1])operator.append(%)labelShow2 %print(operator, operationData)UI.labelData2.set(labelShow2)UI.remainder.config(activeforegroundgray)# 除法 事件 def divisionEvent(event):global labelShow2# 首个字符不能出现除号if not labelShow2:return# 除号前面不能出现运算符除了右括号)和百分号%elif labelShow2[-1] in -×÷(.:return# 分割数据,获取数值和运算符elif not operator:operationData.append(labelShow2)elif operator:if labelShow2[-1] %:operationData[-1] operator.pop()else:operationData.append(labelShow2.split(operationData[-1]operator[-1])[-1])operator.append(÷)labelShow2 ÷print(operator, operationData)UI.labelData2.set(labelShow2)UI.division.config(activeforegroundgray)# 乘法 事件 def multiplicationEvent(event):global labelShow2# 首个字符不能出现乘号if not labelShow2:return# 乘号前面不能出现运算符除了右括号)和百分号%elif labelShow2[-1] in -×÷(.:return# 分割数据,获取数值和运算符elif not operator:operationData.append(labelShow2)elif operator:if labelShow2[-1] %:operationData[-1] operator.pop()else:operationData.append(labelShow2.split(operationData[-1] operator[-1])[-1])operator.append(×)labelShow2 ×print(operator, operationData)UI.labelData2.set(labelShow2)UI.multiplication.config(activeforegroundgray)# 减法 事件 def subtractionEvent(event):addFlag 1 # 添加运算符旗帜global labelShow2# 首字符出现减号视为负号if not labelShow2:addFlag 0 # 添加运算符旗帜# 减号前面不能出现运算符除了括号()和百分号%elif labelShow2[-1] in -×÷.:return# 分割数据,获取数值和运算符elif not operator and labelShow2[-1] not in (:operationData.append(labelShow2)# 非首个数据elif operator and operationData:if labelShow2[-1] %:operationData[-1] operator.pop()elif labelShow2[-1] (:addFlag 0 # 添加运算符旗帜else:operationData.append(labelShow2.split(operationData[-1] operator[-1])[-1])else:addFlag 0# 不保存运算符旗帜if addFlag:operator.append(-)print(operator, operationData)labelShow2 -UI.labelData2.set(labelShow2)UI.subtraction.config(activeforegroundgray)# 加法 事件 def additionEvent(event):addFlag 1 # 添加运算符旗帜global labelShow2# 首字符出现加号视为正号if not labelShow2:addFlag 0 # 添加运算符旗帜# 加号前面不能出现运算符除了括号()和百分号%elif labelShow2[-1] in -×÷.:return# 分割数据,获取数值和运算符elif not operator and labelShow2[-1] not in (:operationData.append(labelShow2)# 非首个数据elif operator and operationData:if labelShow2[-1] %:operationData[-1] operator.pop()elif labelShow2[-1] (:addFlag 0 # 添加运算符旗帜else:operationData.append(labelShow2.split(operationData[-1] operator[-1])[-1])else:addFlag 0# 不保存运算符旗帜if addFlag:operator.append()print(operator, operationData)labelShow2 # 添加加号UI.labelData2.set(labelShow2)UI.addition.config(activeforegroundgray)# 等于 事件 def equalEvent(event):global labelShow2, labelShow1labelShow1 labelShow2 # 显示式子# 首字符不能输入等号if not labelShow2:return# 等号前不能出现的运算符除了数字、右括号、百分号elif labelShow2[-1] in -×÷.:return# 括号必须成对,elif len(re.findall(r\(, labelShow2)) ! len(re.findall(r\), labelShow2)):UI.labelData1.set(labelShow1错误)UI.labelData2.set(括号不完整)return# 等号前面不能是不带括号的正数elif not operator and labelShow2[0] ! and not len(re.findall(r\(, labelShow2)):return# 处理等号前面只有一个数时elif not operator or (labelShow2.strip(()-)[-1] % and len(operator) 1 and operator[0] %):subtractionNum len(re.findall(-, labelShow2)) # 减号数# 查找百分号if labelShow2.strip(()-)[-1] %:num float(labelShow2.strip(()-%)) / 100# 奇数负为负偶数负为正if subtractionNum % 2:labelShow2 str(-num)else:labelShow2 str(num)elif labelShow2.strip(()-)[-1] ! %:num labelShow2.strip(()-)# 奇数负为负偶数负为正if subtractionNum % 2:labelShow2 -numelse:labelShow2 num# 复杂运算else:# 防止报错try:# 计算式子结果if resultEvent(event) 求余错误:returnexcept:UI.labelData1.set(labelShow1 崩溃)UI.labelData2.set(抱歉,小算脑子烧坏了)returnprint(operator, operationData)labelShow1 labelShow2 # 显示计算的式子UI.labelData1.set(labelShow1)UI.labelData2.set(labelShow2)UI.equal.config(activeforegroundgray)# 显示结果后删除存储的数据if operationData:operator.clear()operationData.clear()# 括号 事件 def bracketsEvent(event):global labelShow2, bracketsFlag# 首字符出现左括号(if not labelShow2:labelShow2 (# 左括号前面不能出现数字和小数点elif labelShow2[-1] in -×÷(%:labelShow2 (# 右括号前面必须是数字和右括号elif labelShow2[-1] not in -×÷%(. and len(re.findall(r\(, labelShow2)) ! len(re.findall(r\), labelShow2)):labelShow2 )# 括号前面的百分号if (出来单挑啊labelShow2)[-2] %:bracketsFlag 1if bracketsFlag % 2:labelShow2 labelShow2[:-1:](else:labelShow2 labelShow2[:-1:])UI.labelData2.set(labelShow2)UI.brackets.config(activeforegroundgray)# 小数点 事件 def ditEvent(event):global labelShow2# 小数点开头或者小数点前面是运算符就补零if not labelShow2 or labelShow2[-1] in (-×÷%:labelShow2 0# 小数点前面不能是右括号)elif labelShow2[-1] in ):return# 限制小数点输入(一)elif not operator:if len(re.findall(r\., labelShow2)) 1:return# 限制小数点输入(二)elif operator and operationData:str labelShow2.split(operationData[-1]operator[-1])[-1]if len(re.findall(r\., str)) 1:returnlabelShow2 .UI.labelData2.set(labelShow2)UI.dit.config(activeforegroundgray)# 计算式子结果 def resultEvent(event):global labelShow1, labelShow2, operator, operationData# 分割最后一个数if labelShow2[-1] %:operationData[-1] operator.pop()else:operationData.append(labelShow2.split(operationData[-1] operator[-1])[-1])print(operator, operationData)# 化繁为简逐个括号化简while True:leftBrackets [] # 左括号rightBrackets [] # 右括号minBrackets [] # 最小括号区间# 查找括号并存储其索引号for i in range(len(operationData)):if ( in operationData[i]:leftBrackets.append(i)elif ) in operationData[i]:rightBrackets.append(i)# 判断式子是否有括号if leftBrackets:sign if operationData[leftBrackets[0]][0] -:sign -# 找到最里层的括号for i in range(len(rightBrackets)):# 找到了if leftBrackets[-1] rightBrackets[i]:left leftBrackets[-1]right rightBrackets[i]minBrackets.extend([left, right])break# 无括号式子设置if not minBrackets:minBrackets.extend([0, len(operationData)-1])bracketsNum operationData[minBrackets[0]:minBrackets[1] 1:]bracketsOperation operator[minBrackets[0]:minBrackets[1]:]# 左括号数分割bracketsSplit if re.findall(r\(, bracketsNum[0]):bracketsSplit bracketsNum[0].split(()bracketsNum[0] bracketsSplit[-1]# 化简括号内的式子while True:# 结束循环条件if not bracketsOperation:break# 排除运算错误除数不为零、求余需整数for i in range(len(bracketsOperation)):# 让百分号%参与运算for j in range(2):if % in bracketsNum[ij]:bracketsNum[ij] str(float(bracketsNum[ij].strip())[:-1:])/100)# 查找除号if bracketsOperation[i] ÷:# 判断除数是否为零if float(bracketsNum[i1].strip())) 0:UI.labelData1.set(labelShow1 错误)UI.labelData2.set(除数不能为零)return 除数错误# 查找求余号elif bracketsOperation[i] %:# 判断两个数是否为整数for j in range(2):if re.findall(r\., bracketsNum[ij]):UI.labelData1.set(labelShow1 错误)UI.labelData2.set(求余必须为整数)return 求余错误# 查找乘除求余优先级高if bracketsOperation[i] in ×÷%:# 计算两数之积if bracketsOperation[i] ×:result float(bracketsNum[i]) * float(bracketsNum[i1].strip()))# 计算两数之商elif bracketsOperation[i] ÷:result float(bracketsNum[i]) / float(bracketsNum[i1].strip()))# 计算两数之余elif bracketsOperation[i] %:result float(bracketsNum[i]) % float(bracketsNum[i1].strip()))# 修改括号区间的数据并进入下一次循环查找bracketsNum.pop(i)bracketsNum.pop(i)bracketsOperation.pop(i)bracketsNum.insert(i, str(result))break# 查找加减优先级低elif bracketsOperation[i] in -:if × in bracketsOperation:continueelif ÷ in bracketsOperation:continueelif % in bracketsOperation:continue# 计算两数之和if bracketsOperation[i] :result float(bracketsNum[i]) float(bracketsNum[i 1].strip()))# 计算两数之差elif bracketsOperation[i] -:result float(bracketsNum[i]) - float(bracketsNum[i 1].strip()))# 修改括号区间的数据并进入下一次循环查找bracketsNum.pop(i)bracketsNum.pop(i)bracketsOperation.pop(i)bracketsNum.insert(i, str(result))break# 替换数据之前要补括号leftBracketsNum len(re.findall(r\(, operationData[minBrackets[0]]))-1rightBracketsNum len(re.findall(r\), operationData[minBrackets[1]]))-1# 删除数据for i in range(minBrackets[0], minBrackets[1]1):operationData.pop(minBrackets[0])for i in range(minBrackets[0], minBrackets[1]):operator.pop(minBrackets[0])# 化简一个括号后根据左括号前正负号改变数值正负号if leftBracketsNum 0 and bracketsSplit[-2] -:if bracketsNum[0][0] -:bracketsNum[0] bracketsNum[0][1::]else:bracketsNum[0] - bracketsNum[0]# 合并分割的左括号leftBracketsStr if leftBracketsNum rightBracketsNum:for i in range(len(bracketsSplit)-2):leftBracketsStr bracketsSplit[i](bracketsNum[0] leftBracketsStr bracketsNum[0]# 补左括号并插入计算结果数据if leftBracketsNum rightBracketsNum:operationData.insert(minBrackets[0], f{bracketsNum[0]})# 补右括号并插入计算结果数据elif rightBracketsNum leftBracketsNum:operationData.insert(minBrackets[0], f{bracketsNum[0]}{) * (rightBracketsNum-leftBracketsNum)})# 删除两边多余的括号并插入计算结果数据elif leftBracketsNum rightBracketsNum:string bracketsNum[0]# 计算左括号的负号数num 0for i in bracketsSplit[:-2:]:if i -:num 1# 消除括号if leftBracketsNum 0 and num:if num % 2:if string[0] :string - string[1::]elif string[0] ! -:string - stringelse:if string[0] :string string[1::]operationData.insert(minBrackets[0], string)# 结束条件循环条件if not operator:labelShow2 operationData[0]if (one pieceoperationData[0])[-2::] .0:labelShow2 operationData[0][:-2:]return# 全局变量 import tkinter as tk import time, re UI CalculatorUI() # 计算器UI设计 operator [] # 运算符 operationData [] # 运算数据 labelShow1 # 标签内容1 labelShow2 # 标签内容2 bracketsFlag 0 # 计数旗帜# 主函数 def main():widgetColor() # 组件背景颜色改变UI.base.mainloop() # 保持窗口运行# 代码测试 if __name__ __main__:main() else:print(f导入{__name__}模块) 作者周华 创作日期2023/11/5
http://www.dnsts.com.cn/news/64266.html

相关文章:

  • 网站开发调研报告做软件跟网站哪个难
  • 全国物流网站有哪些平台廊坊企业网站建设公司
  • 网站建设招标文件技术部分网络推广联系方式
  • 校园网站建设详细的设计方案大型机械网站建设公司
  • 用什么软件做网站图片魅姬直播
  • 怎样做无水印视频网站桂林象鼻山景区介绍
  • 西安网站建设的费用线上销售方案
  • 有效的小企业网站建设orchard可以做哪些网站
  • 男女做那个的网站是什么做网站服务器什么配置
  • 网站怎么做的防采集建设网站要求和注意事项
  • 网页网站设计培训建设百度网站多少钱
  • 做网站东莞商丘网站优化
  • 专业做网站推广河南怎么建设网站
  • 设计师新手接单网站小网站模板下载地址
  • 徐州城乡建设招投标网站微信的微网站是什么
  • 厦门外贸网站建设哪家公司大帮人家做网站能赚多少钱
  • 做网站 的主要收获wordpress 新闻资讯
  • 凡客v网上商城h5网站不利于优化吗
  • 团购网站怎么推广系统流小说
  • 专业网站制作公司咨询这样做网站推广
  • 外包网站多少钱seo交流qq群
  • 长春怎么做网站临桂建设局安全股网站
  • 黑彩网站建设品牌宣传型企业网站
  • 宁夏网站制作免费民事法律咨询
  • 手机网页制作与网站建设seo在线外链
  • 南昌哪里做网站好平面设计好就业吗
  • 做交易网站昆明建设咨询监理有限公司网站
  • 域名代理商网站百度推广首页
  • 江苏省城乡住房建设厅网站公司怎么建设网站
  • 免费名字设计logo网站青岛辅德网络技术有限公司