龙空技术网

手把手教你使用PySimpleGUI库打造一款轻量级计算器

程序员城哥 177

前言:

现时我们对“pythongui计算器”大致比较着重,大家都需要知道一些“pythongui计算器”的相关资讯。那么小编同时在网摘上汇集了一些有关“pythongui计算器””的相关文章,希望你们能喜欢,朋友们快快来了解一下吧!

前几天在 Python 交流群里边,一位朋友分享了一个有趣的代码,用于 PySimpleGUI 库打造了一款简易计算器,觉得挺有意思,非常适合入门 PySimpleGUI 的小伙伴们学习,这里拿出来给大家分享一波。

实现过程

这里直接上代码,如下所示:

import PySimpleGUI as sg# 定义主窗口布局,确定行数def window_main():    layout = [        [sg.Text('计算结果:', font=("微软雅黑", 10)), sg.Button('历史记录', font=("微软雅黑", 10), pad=(10, 1))],        [sg.Text('0', key='-express-', justification='right', size=(30, 1), font=("微软雅黑", 10), background_color='#fff', text_color='#000')],        [sg.Text('0', key='-result-', justification='right', size=(30, 1), font=("微软雅黑", 10), background_color='#fff', text_color='#000')],        [sg.Button('清空', size=(6, 2)), sg.Button('删除', size=(6, 2)), sg.Button('x²', size=(6, 2)), sg.Button('÷', size=(6, 2))],        [sg.Button('7', size=(6, 2)), sg.Button('8', size=(6, 2)), sg.Button('9', size=(6, 2)), sg.Button('x', size=(6, 2))],        [sg.Button('4', size=(6, 2)), sg.Button('5', size=(6, 2)), sg.Button('6', size=(6, 2)), sg.Button('-', size=(6, 2))],        [sg.Button('1', size=(6, 2)), sg.Button('2', size=(6, 2)), sg.Button('3', size=(6, 2)), sg.Button('+', size=(6, 2))],        [sg.Button('+/-', size=(6, 2)), sg.Button('0', size=(6, 2)), sg.Button('.', size=(6, 2)), sg.Button('=', size=(6, 2))],    ]    # 创建窗口    return sg.Window('简易计算器@月亮', layout, finalize=True, default_element_size=(50, 1))# 定义历史记录窗口布局def createwindow_history(history_list=None):    history_text = ''    if history_list:        history_text = '\n'.join(['='.join(i) for i in history_list])    layout = [        [sg.Text('历史记录:', font=("微软雅黑", 10))],        [sg.Multiline(history_text, justification='right', disabled=True, autoscroll=True, size=(30, 10), font=("微软雅黑", 10), background_color='#fff', text_color='#000')]    ]    return sg.Window('历史记录', layout, finalize=True)def get_result(eval_str):    global result    eval_str = eval_str.replace('^', '**').replace('x', '*').replace('÷', '/')    try:        result = eval(eval_str)    except Exception as e:        result = '0'    window_main['-result-'].update(result)    return str(result)window_main = window_main()window_sub = Nonehistory_list = []express = '0'result = '0'flag = 0while True:    window, event, value = sg.read_all_windows()    if window == window_main and event in (None, sg.WIN_CLOSED):        if window_sub is not None:            window_sub.close()        break    elif event == '历史记录':        if not window_sub:            window_sub = createwindow_history(history_list)        else:            window_sub.close()            window_sub = None    elif window == window_sub and event is None:        window_sub.close()        window_sub = None    elif event == '=':        express1 = express        express = get_result(express)        history_list.append([express1, express])        flag = 1    elif event == '清空':        express = '0'        result = '0'        window_main['-express-'].update(express)        window_main['-result-'].update(result)    elif event == '删除':        if len(express.lstrip('-').strip('(').strip(')')) == 1:            express = '0'        elif express[-1] == ')':            express = express.lstrip('-').strip('(').strip(')')        else:            express = express[:-1]        window_main['-express-'].update(express)    elif event == 'x²':        express = f'({express}) ^ 2'        window_main['-express-'].update(express)    elif event == '+/-':        express = f'-({express})'        get_result(express)    else:        if flag == 1 and event in '0123456789':            express = '0'            flag = 0        if express == '0':            express = event        else:            express = express + event        window_main['-express-'].update(express)window.close()

代码运行之后,一款建议计算器就已经浮现在眼前了。

之后你可以自己做点简单的加减乘除等计算,都是可以的,也支持清除,查看历史记录功能等等。

总结

大家好,这篇文章主要基于PySimpleGUI库,打造了一款轻量级计算器,实现计算器的相关功能。

标签: #pythongui计算器 #python计算器制作 #python做计算器 #python编写一个简单计算器程序