【案例】用 tkinter 做一个计算器吧?(版本二)
发布日期:2021-06-30 15:03:16 浏览次数:2 分类:技术文章

本文共 3915 字,大约阅读时间需要 13 分钟。

Content

案例介绍

书接上回,这次我们将完善清空键、退格键、括号以及菜单按钮——包括了百分号,数学计算所需要的符号。

我们将要学习:1.无标题小菜单的制作。2.生成/消除子标题框的方法。3.退格键功能的编写。

准备工作

  • Python 3.x

界面模块

将界面扩充为两个部分:扩充之前的主菜单,功能菜单。

在这里插入图片描述

【key points】

  1. 无标题小菜单(功能菜单)的制作。核心代码:root.overrideredirect(True),其功能是消除标题栏,边框。需要注意的是,我为每个按钮事件中都添加了root.destroy()代码,使得每按下一个按钮就可以关闭功能菜单。

  2. 退格键功能。要义是:删除光标前的一个字符,再重新获取 entry 中的内容作为计算表达式,核心代码:

    Entry_word.delete(Entry_word.index(tk.INSERT) - 1, Entry_word.index(tk.INSERT))TEXT_str = Entry_word.get()
  3. 括号功能。核心代码:

    Entry_word.insert(tk.INSERT, '()')TEXT_str = Entry_word.get()

代码汇总

# coding: utf-8# !/usr/bin/python"""@File       :   计算器.py@Author     :   jiaming@Modify Time:   2020/4/26 21:27@Contact    :   https://jiaming.blog.csdn.net/@Version    :   2.0@Desciption :   1. 没有数学计算,百分号                2. 光标尾置 done!                3. 回退键只能回退最后一个字符 done!"""import tkinter as tk# 文本框中内容TEXT_str = ''def get_value():    """    求值    :return:    """    try:        print('所求表达式:', TEXT_str)        value = str(eval(TEXT_str))        return value    except BaseException:        print('出错!')        return ''def menu():    """    菜单    :return:    """    menu = tk.Tk()    menu.title("菜单")    menu.geometry('320x145+590+308')    menu.overrideredirect(True)    menu_list = [        'pi', 'e', 'sin', 'cos',        'tan', 'n!', 'log', 'ln',        '^', 'sqrt', '%', '',    ]    def btn_command_menu(idx):        """        菜单界面        :param idx:        :return:        """        s = menu_list[idx]        print("输入:", s)        menu.destroy()    # 放置按钮    key = 0    for i in range(0, 3):        for j in range(0, 4):            btn = tk.Button(                menu,                text=menu_list[key],                width=10,                height=2,                relief=tk.GROOVE,                command=lambda idx=key: btn_command_menu(idx))            btn.grid(row=i, column=j)            key += 1    menu.mainloop()def main():    """    绘制计算器界面    """    # 界面对象的基本参数设置    root = tk.Tk()    root.title("计算器(Version2)")    root.geometry('335x265+250+250')    # 设置界面是否可以随意拉伸    root.resizable(False, False)    text_list = [        'AC', 'BS', '( )', 'menu',        '7', '8', '9', '+',        '4', '5', '6', '-',        '1', '2', '3', '*',        '.', '0', '=', '/',    ]    # 放置文本框    Entry_word = tk.Entry(root, width=30, font=('Arial', 15))    Entry_word.grid(row=0, column=0, columnspan=4)    def btn_command(idx=None):        """        按钮事件        :param idx:        :return:        """        global TEXT_str        # 打印按钮的 text 值        s = text_list[idx]        print("输入:", s)        if s == '=':            # 按下等号,调用求值函数            value_str = get_value()            TEXT_str = ''  # 所求的表达式            Entry_word.delete(0, tk.END)  # 清空输入框所有内容            Entry_word.insert(tk.END, value_str)  # 向输入框中插入求得的值 value_str        elif s == 'menu':            # 菜单键            menu()  # 调用菜单界面        elif s == 'AC':            TEXT_str = ''  # 所求的表达式            Entry_word.delete(0, tk.END)  # 清空输入框所有内容        elif s == 'BS':            # print(Entry_word.index(tk.INSERT))            Entry_word.delete(Entry_word.index(tk.INSERT) - 1,                              Entry_word.index(tk.INSERT))            TEXT_str = Entry_word.get()        elif s == '( )':            Entry_word.insert(tk.INSERT, '()')            TEXT_str = Entry_word.get()        else:            # 其它            Entry_word.insert(tk.INSERT, s)            TEXT_str = Entry_word.get()    # 放置按钮    key = 0    for i in range(1, 6):        for j in range(0, 4):            btn = tk.Button(                root,                text=text_list[key],                width=10,                height=2,                relief=tk.GROOVE,                command=lambda idx=key: btn_command(idx))            btn.grid(row=i, column=j)            key += 1    root.mainloop()if __name__ == "__main__":    main()

运行截图

请添加图片描述

请添加图片描述
请添加图片描述

后记

以上就是关于如何使用 tkinter 制作一个简易计算器(version 2)的全部内容,接下来,我们会加入数学计算的功能。

在这里插入图片描述

欢迎关注我的,里面有更多关于 python 的精彩知识分享哦~

在这里插入图片描述

转载地址:https://jiaming.blog.csdn.net/article/details/105802117 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【案例】用 tkinter 做一个计算器吧?(版本三)
下一篇:【案例】用 tkinter 做一个计算器吧?(版本一)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年05月01日 19时43分06秒