Python小试牛刀:GUI(图形界面)实现计算器UI界面(二)

上一篇:Python小试牛刀:GUI(图形界面)实现计算器UI界面(一)-CSDN博客

在上一篇文章中介绍了Python GUI常用的库,以及运用GUI标准库tkinter仅设计了计算器的UI界面。

而在本篇文章,我将进一步完善计算器UI界面,实现鼠标放在在组件上即刻改变背景颜色,离开还原背景颜色,以及按钮触发也会有同样的效果。

在下一篇文章,我将完全实现计算器的全部功能,关注我,敬请耐心等待!

运行结果

程序设计

"""
    计算器界面(二)
"""

# 通配符'*'
__all__ = ['main']


# 计算器UI设计
class CalculatorUI:

    import tkinter as tk
    from tkinter import font

    base = tk.Tk()              # 新建窗口
    base.title('计算器')         # 设置标题
    base.geometry("458x400")    # 设置窗口像素大小

    # 全局变量
    labelData1 = tk.StringVar()  # 标签数据
    labelData2 = tk.StringVar()  # 标签数据

    # 设置字体样式
    setChineseFont = font.Font(family='Arial', size=20, weight='bold')
    setFont = font.Font(family='Helvetica', size=12, weight='bold')

    # 初始化设置
    labelData1.set('1+2=3')
    labelData2.set('3')

    # 主框架
    mainFrame = tk.LabelFrame(base, text='标准', borderwidth=2, relief=tk.FLAT, font=setChineseFont)
    mainFrame.pack(expand=True)
    # 标签框架
    labelFrame = tk.Frame(mainFrame, borderwidth=2, relief=tk.GROOVE)
    labelFrame.grid(columnspan=4)

    # 标签
    showLabel = tk.Label(labelFrame, textvariable=labelData1, anchor='e', width=26, font=setChineseFont)
    showLabel.pack()
    tk.Label(labelFrame, textvariable=labelData2, anchor='e', width=26, font=setChineseFont).pack()

    # 删除按钮
    clear = tk.Button(mainFrame, text='C', width=10, height=2, font=setFont)
    clear.grid(row=1, column=0)
    # 退格按钮
    backSpace = tk.Button(mainFrame, text='<-', width=10, height=2, font=setFont)
    backSpace.grid(row=1, column=1)
    # 余数(百分号)
    remainder = tk.Button(mainFrame, text='%', width=10, height=2, font=setFont)
    remainder.grid(row=1, column=2)
    # 除号
    division = tk.Button(mainFrame, text='➗', width=10, height=2, font=setFont)
    division.grid(row=1, column=3)

    # 7
    seven = tk.Button(mainFrame, text='7', width=10, height=2, font=setFont)
    seven.grid(row=2, column=0)
    # 8
    eight = tk.Button(mainFrame, text='8', width=10, height=2, font=setFont)
    eight.grid(row=2, column=1)
    # 9
    nine = tk.Button(mainFrame, text='9', width=10, height=2, font=setFont)
    nine.grid(row=2, column=2)
    # 乘号
    multiplication = tk.Button(mainFrame, text='✖', width=10, height=2, font=setFont)
    multiplication.grid(row=2, column=3)

    # 4
    four = tk.Button(mainFrame, text='4', width=10, height=2, font=setFont)
    four.grid(row=3, column=0)
    # 5
    five = tk.Button(mainFrame, text='5', width=10, height=2, font=setFont)
    five.grid(row=3, column=1)
    # 6
    six = tk.Button(mainFrame, text='6', width=10, height=2, font=setFont)
    six.grid(row=3, column=2)
    # 减法
    subtraction = tk.Button(mainFrame, text='➖', width=10, height=2, font=setFont)
    subtraction.grid(row=3, column=3)

    # 1
    one = tk.Button(mainFrame, text='1', width=10, height=2, font=setFont)
    one.grid(row=4, column=0)
    # 2
    two = tk.Button(mainFrame, text='2', width=10, height=2, font=setFont)
    two.grid(row=4, column=1)
    # 3
    three = tk.Button(mainFrame, text='3', width=10, height=2, font=setFont)
    three.grid(row=4, column=2)
    # 加法
    addition = tk.Button(mainFrame, text='➕', width=10, height=2, font=setFont)
    addition.grid(row=4, column=3)

    # 括号
    brackets = tk.Button(mainFrame, text='(  )', width=10, height=2, font=setFont)
    brackets.grid(row=5, column=0)
    # 0
    zero = tk.Button(mainFrame, text='0', width=10, height=2, font=setFont)
    zero.grid(row=5, column=1)
    # 小数点.
    dit = tk.Button(mainFrame, text='.', width=10, height=2, font=setFont)
    dit.grid(row=5, column=2)
    # 等于
    equal = tk.Button(mainFrame, text='=', width=10, height=2, background='#00BFFF', font=setFont)
    equal.grid(row=5, column=3)

    # 空白填充
    tk.Label(mainFrame, height=3, width=1).grid(row=1, column=4)  # 行填充
    tk.Label(mainFrame, height=3, width=1).grid(row=2, column=4)
    tk.Label(mainFrame, height=3, width=1).grid(row=3, column=4)
    tk.Label(mainFrame, height=3, width=1).grid(row=4, column=4)
    tk.Label(mainFrame, height=3, width=1).grid(row=5, column=4)
    tk.Label(mainFrame, height=1, width=16).grid(row=6, column=1)  # 列填充
    tk.Label(mainFrame, height=1, width=16).grid(row=6, column=3)


# 初始化事件
def initUI(event):
    # 0-9
    UI.zero.config(background='#f0f0f0')        # 0
    UI.one.config(background='#f0f0f0')         # 1
    UI.two.config(background='#f0f0f0')         # 2
    UI.three.config(background='#f0f0f0')       # 3
    UI.four.config(background='#f0f0f0')        # 4
    UI.five.config(background='#f0f0f0')        # 5
    UI.six.config(background='#f0f0f0')         # 6
    UI.seven.config(background='#f0f0f0')       # 7
    UI.eight.config(background='#f0f0f0')       # 8
    UI.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(background='pink')
def zeroReleaseBackground(event):
    UI.zero.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.zero.config(state=tk.NORMAL, background='#f0f0f0')
    zeroEvent(event)
# 1
def oneBackground(event):
    UI.one.config(background='pink')
def oneReleaseBackground(event):
    UI.one.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.one.config(state=tk.NORMAL, background='#f0f0f0')
    oneEvent(event)
# 2
def twoBackground(event):
    UI.two.config(background='pink')
def twoReleaseBackground(event):
    UI.two.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.two.config(state=tk.NORMAL, background='#f0f0f0')
    twoEvent(event)
# 3
def threeBackground(event):
    UI.three.config(background='pink')
def threeReleaseBackground(event):
    UI.three.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.three.config(state=tk.NORMAL, background='#f0f0f0')
    threeEvent(event)
# 4
def fourBackground(event):
    UI.four.config(background='pink')
def fourReleaseBackground(event):
    UI.four.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.four.config(state=tk.NORMAL, background='#f0f0f0')
    fourEvent(event)
# 5
def fiveBackground(event):
    UI.five.config(background='pink')
def fiveReleaseBackground(event):
    UI.five.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.five.config(state=tk.NORMAL, background='#f0f0f0')
    fiveEvent(event)
# 6
def sixBackground(event):
    UI.six.config(background='pink')
def sixReleaseBackground(event):
    UI.six.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.six.config(state=tk.NORMAL, background='#f0f0f0')
    sixEvent(event)
# 7
def sevenBackground(event):
    UI.seven.config(background='pink')
def sevenReleaseBackground(event):
    UI.seven.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.seven.config(state=tk.NORMAL, background='#f0f0f0')
    sevenEvent(event)
# 8
def eightBackground(event):
    UI.eight.config(background='pink')
def eightReleaseBackground(event):
    UI.eight.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.eight.config(state=tk.NORMAL, background='#f0f0f0')
    eightEvent(event)
# 9
def nineBackground(event):
    UI.nine.config(background='pink')
def nineReleaseBackground(event):
    UI.nine.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.nine.config(state=tk.NORMAL, background='#f0f0f0')
    nineEvent(event)

# 特殊字符
# 删除
def clearBackground(event):
    UI.clear.config(background='pink')
def clearReleaseBackground(event):
    UI.clear.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.clear.config(state=tk.NORMAL, background='#f0f0f0')
    clearEvent(event)
# 退格
def backSpaceBackground(event):
    UI.backSpace.config(background='pink')
def backSpaceReleaseBackground(event):
    UI.backSpace.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.backSpace.config(state=tk.NORMAL, background='#f0f0f0')
    backSpaceEvent(event)
# 百分号/求余
def remainderBackground(event):
    UI.remainder.config(background='pink')
def remainderReleaseBackground(event):
    UI.remainder.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.remainder.config(state=tk.NORMAL, background='#f0f0f0')
    remainderEvent(event)
# 除号
def divisionBackground(event):
    UI.division.config(background='pink')
def divisionReleaseBackground(event):
    UI.division.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.division.config(state=tk.NORMAL, background='#f0f0f0')
    divisionEvent(event)
# 乘号
def multiplicationBackground(event):
    UI.multiplication.config(background='pink')
def multiplicationReleaseBackground(event):
    UI.multiplication.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.multiplication.config(state=tk.NORMAL, background='#f0f0f0')
    multiplicationEvent(event)
# 减号
def subtractionBackground(event):
    UI.subtraction.config(background='pink')
def subtractionReleaseBackground(event):
    UI.subtraction.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.subtraction.config(state=tk.NORMAL, background='#f0f0f0')
    subtractionEvent(event)
# 加号
def additionBackground(event):
    UI.addition.config(background='pink')
def additionReleaseBackground(event):
    UI.addition.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.addition.config(state=tk.NORMAL, background='#f0f0f0')
    additionEvent(event)
# 等于
def equalBackground(event):
    UI.equal.config(background='pink')
def equalReleaseBackground(event):
    UI.equal.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.equal.config(state=tk.NORMAL, background='#00BFFF')
    equalEvent(event)
# 括号
def bracketsBackground(event):
    UI.brackets.config(background='pink')
def bracketsReleaseBackground(event):
    UI.brackets.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.brackets.config(state=tk.NORMAL, background='#f0f0f0')
    bracketsEvent(event)
# 小数点
def ditBackground(event):
    UI.dit.config(background='pink')
def ditReleaseBackground(event):
    UI.dit.config(state=tk.DISABLED, background='pink')
    UI.base.update()
    time.sleep(0.1)
    UI.dit.config(state=tk.NORMAL, background='#f0f0f0')
    ditEvent(event)

# 组件背景颜色
def widgetColor():
    # 0-9
    UI.zero.bind('<Motion>', zeroBackground)        # 0
    UI.one.bind('<Motion>', oneBackground)          # 1
    UI.two.bind('<Motion>', twoBackground)          # 2
    UI.three.bind('<Motion>', threeBackground)      # 3
    UI.four.bind('<Motion>', fourBackground)        # 4
    UI.five.bind('<Motion>', fiveBackground)        # 5
    UI.six.bind('<Motion>', sixBackground)          # 6
    UI.seven.bind('<Motion>', sevenBackground)      # 7
    UI.eight.bind('<Motion>', eightBackground)      # 8
    UI.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('<Leave>', initUI)

    # 按钮按下
    UI.base.bind('<KeyPress-0>', zeroReleaseBackground)     # 0
    UI.zero.bind('<Button-1>', zeroEvent)
    UI.base.bind('<KeyPress-1>', oneReleaseBackground)      # 1
    UI.one.bind('<Button-1>', oneEvent)
    UI.base.bind('<KeyPress-2>', twoReleaseBackground)      # 2
    UI.two.bind('<Button-1>', twoEvent)
    UI.base.bind('<KeyPress-3>', threeReleaseBackground)    # 3
    UI.three.bind('<Button-1>', threeEvent)
    UI.base.bind('<KeyPress-4>', fourReleaseBackground)     # 4
    UI.four.bind('<Button-1>', fourEvent)
    UI.base.bind('<KeyPress-5>', fiveReleaseBackground)     # 5
    UI.five.bind('<Button-1>', fiveEvent)
    UI.base.bind('<KeyPress-6>', sixReleaseBackground)      # 6
    UI.six.bind('<Button-1>', sixEvent)
    UI.base.bind('<KeyPress-7>', sevenReleaseBackground)    # 7
    UI.seven.bind('<Button-1>', sevenEvent)
    UI.base.bind('<KeyPress-8>', eightReleaseBackground)    # 8
    UI.eight.bind('<Button-1>', eightEvent)
    UI.base.bind('<KeyPress-9>', nineReleaseBackground)     # 9
    UI.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):
    UI.zero.config(activeforeground='gray')
    print(0)


# 1 事件
def oneEvent(event):
    UI.one.config(activeforeground='gray')
    print(1)


# 2 事件
def twoEvent(event):
    UI.two.config(activeforeground='gray')
    print(2)


# 3 事件
def threeEvent(event):
    UI.three.config(activeforeground='gray')
    print(3)


# 4 事件
def fourEvent(event):
    UI.four.config(activeforeground='gray')
    print(4)


# 5 事件
def fiveEvent(event):
    UI.five.config(activeforeground='gray')
    print(5)


# 6 事件
def sixEvent(event):
    UI.six.config(activeforeground='gray')
    print(6)


# 7 事件
def sevenEvent(event):
    UI.seven.config(activeforeground='gray')
    print(7)


# 8 事件
def eightEvent(event):
    UI.eight.config(activeforeground='gray')
    print(8)


# 9 事件
def nineEvent(event):
    UI.nine.config(activeforeground='gray')
    print(9)


# 删除 事件
def clearEvent(event):
    UI.clear.config(activeforeground='gray')
    print('clear')


# 退格 事件
def backSpaceEvent(event):
    UI.backSpace.config(activeforeground='gray')
    print('backspace')


# 求余 事件
def remainderEvent(event):
    UI.remainder.config(activeforeground='gray')
    print('remainder')


# 除法 事件
def divisionEvent(event):
    UI.division.config(activeforeground='gray')
    print('division')


# 乘法 事件
def multiplicationEvent(event):
    UI.multiplication.config(activeforeground='gray')
    print('multiplication')


# 减法 事件
def subtractionEvent(event):
    UI.subtraction.config(activeforeground='gray')
    print('subtraction')


# 加法 事件
def additionEvent(event):
    UI.addition.config(activeforeground='gray')
    print('addition')


# 等于 事件
def equalEvent(event):
    UI.equal.config(activeforeground='gray')
    print('equal')


# 括号 事件
def bracketsEvent(event):
    UI.brackets.config(activeforeground='gray')
    print('brackets')


# 小数点 事件
def ditEvent(event):
    UI.dit.config(activeforeground='gray')
    print('dit')



import tkinter as tk
import time
# 全局变量
UI = CalculatorUI()  # 计算器UI设计


# 主函数
def main():

    widgetColor()       # 组件背景颜色改变
    UI.base.mainloop()  # 保持窗口运行


# 代码测试
if __name__ == '__main__':
    main()
else:
    print(f'导入{__name__}模块')

作者:周华

创作日期:2023/11/1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/112972.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

「Java开发指南」如何用MyEclipse搭建Spring MVC应用程序?(一)

本教程将指导开发者如何生成一个可运行的Spring MVC客户应用程序&#xff0c;该应用程序实现域模型的CRUD应用程序模式。在本教程中&#xff0c;您将学习如何&#xff1a; 从数据库表的Scaffold到现有项目部署搭建的应用程序 使用Spring MVC搭建需要MyEclipse Spring或Bling授…

本章内容的重点是对各种电子式电动机保护器电路的原理分析和故障维修指导,对电子式电动机保护器以下简称为电动机保护器。

上世纪八十年代之前&#xff0c;电子技术的应用尚处于初级阶段&#xff0c;对电动机的保护任务多由热继电器承担&#xff0c;国内型号为为JR20-XX系列、JR36-XX系列等。其保护机理如下&#xff1a;热继电器由发热元件、双金属片、触点及一套传动和调整机构组成。发热元件是一段…

【Linux】第八站:gcc和g++的使用

文章目录 一、解决sudo命令的问题二、Linux编译器-gcc/g1.gcc的使用2.g的使用 三、gcc编译链接过程1.预处理2.编译&#xff08;生成汇编&#xff09;3.汇编&#xff08;生成机器可识别代码&#xff09;4.链接&#xff08;生成可执行文件或库文件&#xff09;5.一些选项的意义 四…

SQLITE3 函数接口

简述 sqlite3 接口的核心元素: 两大对象&#xff0c;八大函数&#xff1b; 其中两个对象指的是: sqlite3 数据库连接对象 数据库的连接句柄(数据库的文件描述符) 代表你打开的那个 sqlite3 的数据库文件,后序对数据库的操作都需要用到这个对象 sqlite3_stmt SQL 语句对象…

从「码农」到管理者,E人程序员的十年蜕变

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 当我们谈论程序员创业时&#xff0c;常常会首先想到一些传统观念认为的挑战&#xff1a;沟通技巧不佳、逻…

各种爱心特效代码免费分享

「链接&#xff1a;https://pan.xunlei.com/s/VNi9l3Mqp9oEflga1T6M-ZUOA1?pwdsam3# 提取码&#xff1a;sam3”复制这段内容后打开手机迅雷App&#xff0c;查看更方便」 「链接&#xff1a;https://pan.xunlei.com/s/VNi9lWqdFIwdtD5sdCDZFamoA1?pwdka8b# 提取码&#xff1a;…

集简云x slack(自建)无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

slack是一个工作效率管理平台&#xff0c;让每个人都能够使用无代码自动化和 AI 功能&#xff0c;还可以无缝连接搜索和知识共享&#xff0c;并确保团队保持联系和参与。在世界各地&#xff0c;Slack 不仅受到公司的信任&#xff0c;同时也是人们偏好使用的平台。 官网&#x…

基于SSM的理发店管理系统

基于SSM的理发店管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 公告信息 管理员界面 用户界面 摘要 基于SSM&#xff08;Spring、Spring MVC、…

1. PPT高效初始化设置

1. PPT高效初始化设置 软件安装&#xff1a;Office 2019 主题和颜色 颜色可以在白天与黑夜切换&#xff0c;护眼 切换成了黑色 撤回次数 撤回次数太少&#xff0c;只有20次怎么办 自动保存 有时忘记保存就突然关闭&#xff0c;很需要一个自动保存功能 图片压缩 图…

TypeScript之装饰器

一、是什么 装饰器是一种特殊类型的声明&#xff0c;它能够被附加到类声明&#xff0c;方法&#xff0c; 访问符&#xff0c;属性或参数上 是一种在不改变原类和使用继承的情况下&#xff0c;动态地扩展对象功能 同样的&#xff0c;本质也不是什么高大上的结构&#xff0c;就…

网络质量探测

目录 一.BFD监测网络状态 二. NQA检测网络状态 一.BFD监测网络状态 BFD(BidrectionaL Forwarding Detection 双向转发检测)用于快速检测系统设备之间的发送和接受两个方向的通信故障&#xff0c;并在出现故障时通知生成应用。BFD 广泛用于链路故障检测&#xff0c;并能实现与…

Python画图之皮卡丘

Python-turtle画出皮卡丘&#xff08;有趣小游戏&#xff09; 一、效果图二、Python代码 一、效果图 二、Python代码 import turtledef getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensi…

在虚拟机centos7中部署docker+jenkins最新稳定版

在虚拟机centos7中部署dockerjenkins最新稳定版 查看端口是否被占用 lsof -i:80 查看运行中容器 docker ps 查看所有容器 docker ps -a 删除容器 docker rm 镜像/容器名称 强制删除 docker rmi -f 镜像名 查看当前目录 pwd 查看当前目录下所有文件名称 ls 赋予权限 chown 777 …

回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测

回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测 目录 回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.WOA-CNN-SVM鲸鱼算法…

STM32-RTC实时时钟

目录 RTC实时时钟 功能框图 UNIX时间戳 初始化结构体 RTC时间结构体 RTC日期结构体 RTC闹钟结构体 进入和退出配置函数 实验环节1&#xff1a;显示日历 常规配置 RTC配置 测试环节 实验现象 实验环节2&#xff1a;闹钟 常规配置 RTC配置 测试环节 实验现象 R…

【C/C++】仿函数

函数调用运算符 () 也可以重载由于重载后使用的方式非常像函数的调用&#xff0c;因此称为仿函数仿函数没有固定写法&#xff0c;非常灵活 示例&#xff1a; #include <iostream> #include <string> using namespace std;class MyPrint { public://重载的运算符是…

Antlr4学习笔记

背景 在阅读shardingjdbc-4.1.1代码时&#xff0c;发现一段sql解析的逻辑&#xff0c;好奇它的实现&#xff0c;查阅相关资料发现解析引擎基于Antlr4实现&#xff0c;便有了此文 官方文档中也描述了解析引擎的迭代过程 SQL解析作为分库分表类产品的核心&#xff0c;其性能和兼…

VSCode 如何设置背景图片

VSCode 设置背景图片 1.打开应用商店&#xff0c;搜索 background &#xff0c;选择第一个&#xff0c;点击安装。 2. 安装完成后点击设置&#xff0c;点击扩展设置。 3.点击在 settings.json 中编辑。 4.将原代码注释后&#xff0c;加入以下代码。 // { // "workben…

第4章_运算符

文章目录 1. 算术运算符1.1 加法与减法运算符1.2 乘法与除法运算符1.3 求模运算符 2. 比较运算符2.1 等号运算符2.2 安全等于运算符2.3 不等于运算符2.4 空运算符2.5 非空运算符2.6 最小值运算符2.7 最大值运算符2.8 BETWEEN AND运算符2.9 IN运算符2.10 NOT IN运算符2.11 LIKE运…

Mysql用sql查询数字四舍五入小数点后两位并且第二位如果没有数用0填补

表中数据小数点后几位好长&#xff0c;直接上图 核心sql REPLACE(FORMAT(ROUND(d2.jiner, 2), 2), ,, ) ROUND函数处理数字四舍五入 FORMAT处理小数点后面必须跟进两位&#xff0c;也就是第二位没数字的话用0填补 REPLACE处理将逗号全部去除&#xff0c;因为FORMAT会导致数字…