【案例】用 tkinter 做一个计算器吧?(版本二)
发布日期:2021-06-30 15:03:16
浏览次数:2
分类:技术文章
本文共 3915 字,大约阅读时间需要 13 分钟。
Content
案例介绍
书接上回,这次我们将完善清空键、退格键、括号以及菜单按钮——包括了百分号,数学计算所需要的符号。
我们将要学习:1.无标题小菜单的制作。2.生成/消除子标题框的方法。3.退格键功能的编写。
准备工作
- Python 3.x
界面模块
将界面扩充为两个部分:扩充之前的主菜单,功能菜单。
【key points】
-
无标题小菜单(功能菜单)的制作。核心代码:
root.overrideredirect(True)
,其功能是消除标题栏,边框。需要注意的是,我为每个按钮事件中都添加了root.destroy()
代码,使得每按下一个按钮就可以关闭功能菜单。 -
退格键功能。要义是:删除光标前的一个字符,再重新获取 entry 中的内容作为计算表达式,核心代码:
Entry_word.delete(Entry_word.index(tk.INSERT) - 1, Entry_word.index(tk.INSERT))TEXT_str = Entry_word.get()
-
括号功能。核心代码:
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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年05月01日 19时43分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
location区段
2019-04-30
nginx访问控制、基于用户认证、https配置
2019-04-30
linux内存的寻址方式
2019-04-30
how2heap-double free
2019-04-30
how2heap-fastbin_dup_consolidate
2019-04-30
fmt在bss段(neepusec_easy_format)
2019-04-30
tf keras SimpleRNN源码解析
2019-04-30
MyBatisPlus简单入门(SpringBoot)
2019-04-30
攻防世界web进阶区web2详解
2019-04-30
xss-labs详解(上)1-10
2019-04-30
xss-labs详解(下)11-20
2019-04-30
攻防世界web进阶区ics-05详解
2019-04-30
攻防世界web进阶区ics-04详解
2019-04-30
sql注入总结学习
2019-04-30
Python 之 histogram直方图
2019-04-30
Python实现决策树 Desision Tree & 可视化
2019-04-30
决策树 Decision tree
2019-04-30
nominal和ordinal & 数据处理中四种基本数据类型
2019-04-30