python简易计算器字典_用python编写一个简单的计算器

计算器功能与组成部分

基本功能创建简单的操作界面键盘快捷键屏幕和显示部分数字按钮和功能键负号和小数点的输入在数据中插入逗号核心计算部分次方运算返回和清除自定义设置

基本功能

一个简单的计算器需要一个简单操作界面、会运算加减乘除运算的基本功能、支持键盘快捷键入

创建简单的操作界面

操作界面用pygame完全可行 主程序如下:

import pygame

import sys

from settings import Settings

import functions as fu

from pygame.sprite import Group

from classs import *

from digital import *

def calculator():

pygame.init()

setting=Settings()

#创建设置参数

screen=pygame.display.set_mode((setting.screen_width,setting.screen_height))

pygame.display.set_caption('计算器')

#创建pygame主屏幕

calculator_screen=Calculator_screen(screen,setting)

#创建计算器屏幕,用于显示数字

buttons=Group()

#创建数字按钮编组

gnbuttons=Group()

#创建特殊按钮编组,比如+,-,×....

daorus=Group()

#创建用户自定义功能按钮

button_lei=fu.digital_button(screen,setting,buttons)

#将所有数字按钮存储在一个列表中

gn_button_lei=fu.gn_button(screen,setting,gnbuttons)

#将所有特殊按钮存储在一个列表中

daoru_lei=fu.daoru_button(screen,setting,daorus)

#将用户自定义功能按钮存储在一个列表中

digital=Digital_jihe()

#创建用于显示的数字

shu=Shu(screen,setting,calculator_screen,digital)

#创建用于在计算器屏幕上显示的数字

tips=Tips(calculator_screen,setting,screen,shu)

#创建提示标记,显示必要时要提醒的信息

while True:

"""开始屏幕主循环"""

screen.fill(setting.bg_color)

#用颜色填充屏幕

fu.check_events(button_lei,gn_button_lei,calculator_screen,

digital,shu,setting,tips,daoru_lei)

#检测鼠标与键盘响应事件

fu.update_screen(calculator_screen,buttons,

gnbuttons,screen,shu,tips,daorus)

#持续更新屏幕内容

calculator()

实际运行效果:  数字键和加减乘除等功能键是分开的,底部按钮用于导入导出计算器的参数设置为txt文件,方便使用者自行修改部分设置。

键盘快捷键

加减乘除:→/←/↑/↓ 等号:enter 后退:backspace 清除:空格 次方符号:左shift 导入:F1 导出:F2 负号:, 小数点:. 数字:数字键+小键盘数字键

鼠标和键盘操作部分:

def check_events(button_lei,gn_button_lei,calculator_screen,

digital,shu,setting,tips,daoru_lei):

"""检测鼠标和键盘事件"""

x=check_edges(calculator_screen,digital,shu)

y=check_dier_edges(calculator_screen,digital,shu)

for event in pygame.event.get():

if event.type==pygame.QUIT:

sys.exit(0)

if event.type==pygame.KEYDOWN:

keydown(event,button_lei,gn_button_lei,setting,

digital,shu,calculator_screen,x,y,tips,daoru_lei)

if event.type==pygame.KEYUP:

keyup(event,button_lei,gn_button_lei,setting,daoru_lei)

if event.type==pygame.MOUSEBUTTONDOWN:

mouse_x,mouse_y=pygame.mouse.get_pos()

mousedown(event,mouse_x,mouse_y,button_lei,gn_button_lei,

calculator_screen,digital,shu,setting,x,y,tips,daoru_lei)

if event.type==pygame.MOUSEBUTTONUP:

mouse_x,mouse_y=pygame.mouse.get_pos()

mouseup(event,mouse_x,mouse_y,button_lei,gn_button_lei,setting,daoru_lei)

def keydown(event,button_lei,gn_button_lei,setting,

digital,shu,calculator_screen,x,y,tips,daoru_lei):

"""响应键盘按下事件"""

if event.key==pygame.K_ESCAPE:

sys.exit(0)

elif event.key==pygame.K_9 or event.key==pygame.K_KP9:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,9)

elif event.key==pygame.K_8 or event.key==pygame.K_KP8:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,8)

elif event.key==pygame.K_7 or event.key==pygame.K_KP7:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,7)

elif event.key==pygame.K_6 or event.key==pygame.K_KP6:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,6)

elif event.key==pygame.K_5 or event.key==pygame.K_KP5:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,5)

elif event.key==pygame.K_4 or event.key==pygame.K_KP4:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,4)

elif event.key==pygame.K_3 or event.key==pygame.K_KP3:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,3)

elif event.key==pygame.K_2 or event.key==pygame.K_KP2:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,2)

elif event.key==pygame.K_1 or event.key==pygame.K_KP1:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,1)

elif event.key==pygame.K_0 or event.key==pygame.K_KP0:

k.button_click(calculator_screen,button_lei,setting,digital,shu,x,y,0)

elif event.key==pygame.K_BACKSPACE:

k.button_tui_click(calculator_screen,gn_button_lei,setting,digital,shu)

elif event.key==pygame.K_KP_PLUS or event.key==pygame.K_RIGHT:

k.gnbutton_click(gn_button_lei,setting,digital,shu,calculator_screen,'+')

elif event.key==pygame.K_KP_MINUS or event.key==pygame.K_LEFT:

k.gnbutton_click(gn_button_lei,setting,digital,shu,calculator_screen,'-')

elif event.key==pygame.K_KP_MULTIPLY or event.key==pygame.K_UP:

k.gnbutton_click(gn_button_lei,setting,digital,shu,calculator_screen,'×')

elif event.key==pygame.K_KP_DIVIDE or event.key==pygame.K_DOWN:

k.gnbutton_click(gn_button_lei,setting,digital,shu,calculator_screen,'÷')

elif event.key==pygame.K_LSHIFT:

k.gnbutton_click(gn_button_lei,setting,digital,shu,calculator_screen,'^')

elif event.key==pygame.K_EQUALS:

k.button_deng_click(gn_button_lei,setting,digital,shu,tips)

elif event.key==pygame.K_RETURN:

k.button_deng_click(gn_button_lei,setting,digital,shu,tips)

elif event.key==pygame.K_KP_ENTER:

k.button_deng_click(gn_button_lei,setting,digital,shu,tips)

elif event.key==pygame.K_c:

k.button_qing_click(gn_button_lei,setting,digital,shu,calculator_screen)

elif event.key==pygame.K_SPACE:

k.button_qing_click(gn_button_lei,setting,digital,shu,calculator_screen)

elif event.key==pygame.K_COMMA:

k.button_fu_click(button_lei,setting,digital,shu)

elif event.key==pygame.K_PERIOD or event.key==pygame.K_KP_PERIOD:

k.button_pot_click(button_lei,setting,digital,shu)

elif event.key==pygame.K_F1:

k.daoru_click(setting,daoru_lei)

elif event.key==pygame.K_F2:

k.daochu_click(setting,daoru_lei,tips,shu)

def keyup(event,button_lei,gn_button_lei,setting,daoru_lei):

"""响应键盘松开"""

for x in button_lei:

x.color=setting.button_color

for x in gn_button_lei[:7]:

x.color=setting.gnbutton_color

for x in daoru_lei:

x.color=setting.daoru_color

gn_button_lei[7].color=setting.deng_color

def mouseup(event,mouse_x,mouse_y,button_lei,

gn_button_lei,setting,daoru_lei):

"""响应鼠标按钮松开"""

for x in button_lei:

x.color=setting.button_color

for x in gn_button_lei[:7]:

x.color=setting.gnbutton_color

for x in daoru_lei:

x.color=setting.daoru_color

gn_button_lei[7].color=setting.deng_color

def mousedown(event,mouse_x,mouse_y,button_lei,gn_button_lei,

calculator_screen,digital,shu,setting,x,y,tips,daoru_lei):

"""响应鼠标按下"""

button_9_click=button_lei[9].rect.collidepoint(mouse_x,mouse_y)

button_8_click=button_lei[8].rect.collidepoint(mouse_x,mouse_y)</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值