菜鸟IT的博客
"菜鸟IT"的博客 (WWW.17WX.NET)
熟悉HTML网站的前端美工到切图制作,搭配DIV+TABLE+CSS,熟悉Fireworks和Dreamwear的网站制作实战应用,专注于学习和记录JS脚本对于网页改造的各种新奇技术.平时的工作既要做销售,也要做前端开发,也要做后期的客户售后维护,此博客为博主自己平时的IT工作的实战学习笔记,记录自己工作和学习中遇到的各种坑,也分享给有需要的新人...
博客首页 网站前端制作 网赚 软件应用 Windows系统 Python
谷歌联盟提供的广告↓
[网站前端制作]有关标签↓
[网赚]有关标签↓
[软件应用]有关标签↓
[Windwos系统]有关标签↓
 | 
菜鸟IT的博客 >> Python

计算器开发-实战模拟(第2节) | 获取按钮对应的text文本→txt=str(e.widget.configure().get("text")[-1]) | bind函数的参数 代表鼠标左键单击的事件
# 一定要定义编码
# -*- coding: UTF-8 -*-

# 【1】导入库tkinter库,不弄别名简称
import tkinter
# 导入提示库,不弄别名简称
import tkinter.messagebox

# 新导入库,用于pillow,支持各种后缀的图片
from PIL import ImageTk,Image

# 防止二级制运算的精度丢失
import decimal
from decimal import Decimal


# --------自定义按钮对应的函数--开始--------------- #
def JiSuan(e):
    # 通过点击事件函数获取按钮对应的text文本↓
    # print((e.config().get("text")[-1]))
    # 再次调试,输出点击按钮输出文本
    # print(e.widget.configure().get("text")[-1])
    # 要进行字符串拼接改造,不然连续点击按钮总是只显示1个数字↓
    # 注释掉 → varWenBenKuang1.set(e.widget.configure().get("text")[-1])
    txt=str(e.widget.configure().get("text")[-1])
    # 按“清空”键,进行清空文本框的文字
    if(txt=="清空"):
        varWenBenKuang1.set("")
    elif(txt=="退格"):
        varWenBenKuang1.set(varWenBenKuang1.get()[0:len(varWenBenKuang1.get())-1])
    else:
        varWenBenKuang1.set(varWenBenKuang1.get()+txt)



# 设置关于“等于号”的函数
def AnNiu_DengHao_DianJi():
    try:
        # 【下面4行代码】解决小数点后面精度丢失问题
        JieGuo0=eval(varWenBenKuang1.get())
        JieGuo1=decimal.Context(rounding=decimal.ROUND_HALF_UP).create_decimal(str(JieGuo0))
        JieGuo1 = '{:g}'.format(JieGuo1)
        JieGuo1 = float(JieGuo1) if '.' in JieGuo1 else int(JieGuo1)
        





        # 字符串拼接
        varWenBenKuang1.set(varWenBenKuang1.get()+"="+str(JieGuo1))
    except:
        tkinter.messagebox.showerror("错误提示","请输入正确的算式!点击“清空”按钮,重新输入算式!")
        # varWenBenKuang1.set("")




# --------自定义按钮对应的函数--结束--------------- #


# 【1】创建软件窗口实体,窗体
chuangkou1=tkinter.Tk()

# 【2】软件界面顶部显示名称以及版本号
chuangkou1.title("计算器开发-frame-实战")

# 【3】软件的长宽、在当前桌面屏幕的左边距、顶上边距
# 定义窗口自身宽度
ck1w=319
# 定义窗口自身高度
ck1h=258
# 获取屏幕宽度
pmw=chuangkou1.winfo_screenwidth()
# 获取屏幕高度
pmh=chuangkou1.winfo_screenheight()
# 计算水平方向的起点位置坐标
x1=pmw/2-ck1w/2
# 计算垂直方向的起点位置坐标
y1=pmh/2-ck1h/2
# 设置窗体所在屏幕的坐标位置
chuangkou1.geometry("%dx%d+%d+%d"%(ck1w,ck1h,x1,y1))

# 【4】软件界面窗体的背景属性,背景颜色改成绿色,绿色的颜色属性值
chuangkou1["background"]="#111111"

# 【5】软件界面左上角的ico图标
chuangkou1.iconbitmap('./pic1/logo_ico.ico')


# 开始正式编辑代码↓↓↓↓

# 声明变量绑定文本框( WenBenKuang1 )的输入内容
varWenBenKuang1=tkinter.StringVar()
# 最上面第1个单行文本框
WenBenKuang1=tkinter.Entry(chuangkou1,fg="#ffffff",bg="#111111",font=("微软雅黑",18),textvariable=varWenBenKuang1)
# 使用sticky=tkinter.EW把文本框的grid布局横向拉伸填充
WenBenKuang1.grid(row=0,column=0,sticky=tkinter.EW,ipady=6)

# 创建Frame框架用于布局排版各种数字按钮
f1=tkinter.Frame(chuangkou1)
f1.grid(row=1,column=0)

# 开始添加按钮,不建议一个一个的创建按钮。
# 批量添加按钮。把所有的按钮载入到1个列表数组里。

# 先添加按钮文本的列表。
AnNiu_WenBen_S=[7,8,9,"*",4,5,6,"-",1,2,3,"+",0,".","清空","退格"]
# 定义按钮排版的行和列的变量,每4个为1行
# 行变量
HangV=0
# 列变量
LieV=0

for v in AnNiu_WenBen_S:
    if (LieV!=0 and LieV%4==0):
        HangV+=1 # 换行
        LieV=0 # 换行以后重新给列复制
    AnNiu1=tkinter.Button(f1,text=v,width=10,height=2,font=("微软雅黑",9))
    # bind函数的参数 <Button-1> 代表鼠标左键单击的事件
    AnNiu1.bind("<Button-1>",JiSuan)
    AnNiu1.grid(row=HangV,column=LieV)
    LieV+=1

# 添加等号按钮,并且让等号按钮合并4列
AnNiu_DengHao=tkinter.Button(f1,text="=",width=6,command=AnNiu_DengHao_DianJi)
AnNiu_DengHao.grid(row=HangV+1,column=0,columnspan=4,sticky=tkinter.EW)











# ------末尾必须放死循环代码---分割线------ #
# 【End.1】持续显示软件界面,相当于死循环,↓
# 【End.1】这个窗体的作用是监听这个界面发生的一切事件,包括鼠标点击动作。
# 【End.1】下面这个死循环代码必须放在最后面。
chuangkou1.mainloop()

菜鸟IT博客[2021.12.02-09:23] 访问:306
[关闭窗口]  
Google公司(谷歌联盟)提供的广告↓
本页的htm伪静态链接网址:分享链接加载中....

收藏链接: www.ems-help.com | www.17post.com | www.17track.wang | www.kd100.wang | www.17wx.net | www.11185cha.com | www.sftrack.net | www.kdjiage.com | m.kdjiage.com | www.expba.net | m.expba.net | www.pptrack.net
学习Python的关键点
【1】★ Python:解决小数点后面四舍五入的精度丢失问题(二进制转换导致,另解决prec动态保留小数点后多少位)
【2】 ★ Python:单个py文件打包exe程序
【3】 ★ 给自己写的exe程序加上注册授权保护
【4】 ★ Python的http请求超时设置(timeout)| 异常类型/捕获异常
【5】 ★ Python的多线程的线程池的使用| ThreadPoolExecutor
【6】 ★ Python能用到的免费代理IP网址
【7】 ★ Python_用于测试代理IP是否有效
【8】 ★ Python Requests post() 方法 | post方式提交api
【9】 ★★★ Python Tkinter Gui视频学习教程
【10】 ★★★ Python 小项目实战-视频学习教程
【11】 ★★★ Python 爬虫项目实战-视频教程
【12】 ★★★ 高级进阶的关于python的五本书: 「Python从菜鸟到高手」、「html5+css3+JavaScript从入门到精通」、「Django Web应用开发实战」、「漫画算法」
【13】 ★★★ Request库-爬虫
【14】 ★★★ Python 图形识别文字
【15】 ★★★ Python 滑动验证码识别【图文教程】
【16】 ★★★ Python 滑动验证码识别【视频教程】
【18】 ★★★ Python 关于Class类的应用【视频教程】
【19.1】 ★★★ Python 关于进度条的制作(1)
【19.2】 ★★★ Python 关于进度条的制作(2)
【20】★★★ Python 抓取某宝的商品信息
【21】★★★ Python 一小时学会全栈开发浏览器版本的企业管理系统【视频教程】
【22】★★★ Python 全栈开发——前端+后端【视频教程】
【23】★★★ Layui 浏览器前端模块化UI框架
【24】★★★ Python-Django-Web应用开发【视频教程】
【25】★★★ Python 从0开始学【视频教程】
【26】★★★ Python的tkinter界面打包exe以后关于icon图标报错的解决办法!
【27】★★★ Python的tkinter视频学习教程【N个系统性学习合集视频】★★★
【28】★★★ Python全栈开发【视频教程】★★★
Copyright © 17WX.NET 版权所有 Manage 沪ICP备13006304号-5 沪公网安备31011702006630号
,sitemap.html,sitemap.xml
网站人气值: