博客
关于我
【python】Tkinter模块之简易计算器
阅读量:369 次
发布时间:2019-03-04

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

Tkinter模块之简易计算器

语法部分:

1、使用tkinter.Tk() 生成主窗口(root=tkinter.Tk());

root.title('标题名')            修改框体的名字,也可在创建时使用className参数来命名;root.resizable(0,0)          框体大小可调性,分别表示x,y方向的可变性;root.mainloop()                          保持主窗口一直消息循环中。。

2、tkinter中的核心组件:

在这里插入图片描述
3、组件的放置和排版:
在这里插入图片描述
4、文本框tkinter.Entry,tkinter.Text控制参数:
Recently 祝祝
5、 使用tkinter.Button时控制按钮的参数:
Recently 祝祝 activebackground:按钮按下后显示颜place_params色
6、functools下的partial模块应用
偏函数partial,可以理解为定义了一个模板,后续的按钮在模板基础上进行修改或添加特性
**

注意:

1:sticky:默认的控件在窗口中的对齐方式是居中。可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上对齐/下对齐/左对齐/右对齐,可以单独使用N/S/E/W,也可以上下和左右组合使用,达到不同的对齐效果,

总结如下:

sticky=N/S/E//W:顶端对齐/底端对齐/右对齐/左对齐

sticky=N+S:拉伸高度,使其在水平方向上顶端和底端都对齐

sticky=E+W,拉伸宽度,使其在垂直方向上左边界和右边界都对齐

sticky=N+S+E:拉伸高度,使其在水平方向上对齐,并将控件放在右边(当两个控件放在同一行同一列时效果明显)

2、pack()
pack()有以下几个常用属性:

side

padx
pady
ipadx
ipady
1,side
side属性有四个可选值:‘top’、‘bottom’、‘left’、‘right’,分别表示将控件位置设在窗口顶部中心、底部中心、左边中心、右边中心。side默认值为’top’。

2,padx、pady、ipadx、ipady

这四个属性分别设置控件水平方向外边距、竖直方向外边距、水平方向内边距、竖直方向内边距。

**

**

运行结果图:

**

在这里插入图片描述

修改代码后运行结果:

Recently 祝祝

运行代码:

import tkinterfrom functools import partial# 按钮输入调用def get_input(entry, argu):    # 从entry窗口展示中获取输入的内容    input_ZMX = entry.get()    # 出现连续+,则第二个+为无效输入,不做任何处理    if (input_ZMX[-1:] == '+') and (argu == '+'):        return    # 输入合法将字符插入到entry窗口结尾    entry.insert("end", argu)# 清空entry内容(清空窗口)def clear(entry):    entry.delete(0, "end")# 计算def calc(entry):    input_ZMX = entry.get()    # 计算前判断输入内容是否为空;首字符不能为*/;*/不能连续出现3次;    if not input_ZMX:        return    clear(entry)    # 异常捕获,在进行数据运算时如果出现异常进行相应处理    try:        # eval() 函数用来执行一个字符串表达式,并返回表达式的值;并将执行结果转换为字符串        output_ZMX = str(eval(input_ZMX))    except Exception:        # 将提示信息输出到窗口        entry.insert("end", "Calculation error")    else:        # 将计算结果显示在窗口中        if len(output_ZMX) > 20:            entry.insert("end", "Value overflow")        else:            entry.insert("end", output_ZMX)if __name__ == '__main__':    root = tkinter.Tk()    root.title("Calculation")# 框体大小可调性,分别表示x,y方向的可变性;    root.resizable(0, 0)    button_ZMX = 'orange'    math_sign_ZMX = 'DarkTurquoise'    cal_output_ZMX = 'YellowGreen'    button_active_ZMX = 'Yellow'       entry = tkinter.Entry(root, justify="right", font=1)    entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)    def place_button(text, func, func_params, bg=button_ZMX , **place_params):        # 偏函数partial,可以理解为定义了一个模板,后续的按钮在模板基础上进行修改或添加特性        # activebackground:按钮按下后显示颜place_params色        my_button = partial(tkinter.Button, root, bg=button_ZMX, padx=10, pady=3, activebackground=button_active_ZMX)        button = my_button(text=text, bg=bg, command=lambda: func(*func_params))        button.grid(**place_params)    # 文本输入类按钮    place_button('7', get_input, (entry, '7'), row=1, column=0, ipadx=5, pady=5)    place_button('8', get_input, (entry, '8'), row=1, column=1, ipadx=5, pady=5)    place_button('9', get_input, (entry, '9'), row=1, column=2, ipadx=5, pady=5)    place_button('4', get_input, (entry, '4'), row=2, column=0, ipadx=5, pady=5)    place_button('5', get_input, (entry, '5'), row=2, column=1, ipadx=5, pady=5)    place_button('6', get_input, (entry, '6'), row=2, column=2, ipadx=5, pady=5)    place_button('1', get_input, (entry, '1'), row=3, column=0, ipadx=5, pady=5)    place_button('2', get_input, (entry, '2'), row=3, column=1, ipadx=5, pady=5)    place_button('3', get_input, (entry, '3'), row=3, column=2, ipadx=5, pady=5)    place_button('0', get_input, (entry, '0'), row=4, column=0, ipadx=8, pady=5,                 columnspan=2, sticky=tkinter.E + tkinter.W + tkinter.N + tkinter.S)    place_button('.', get_input, (entry, '.'),row=4, column=2, ipadx=7, pady=5)    # 运算输入类按钮    place_button('*', get_input, (entry, '*'), bg=math_sign_ZMX , row=1, column=3, ipadx=5, pady=5)    place_button('-', get_input, (entry, '-'), bg=math_sign_ZMX, row=2, column=3, ipadx=5, pady=5)    place_button('+', get_input, (entry, '+'), bg=math_sign_ZMX, row=3, column=3, ipadx=5, pady=5)    # 功能输入类按钮(背景色、触发功能不同)    place_button('=', calc, (entry,), bg=cal_output_ZMX, row=4, column=3 ,ipadx=5, pady=5)    root.mainloop()

转载地址:http://niyg.baihongyu.com/

你可能感兴趣的文章
Mysql-丢失更新
查看>>
Mysql-事务阻塞
查看>>
Mysql-存储引擎
查看>>
mysql-开启慢查询&所有操作记录日志
查看>>
MySQL-数据目录
查看>>
MySQL-数据页的结构
查看>>
MySQL-架构篇
查看>>
MySQL-索引的分类(聚簇索引、二级索引、联合索引)
查看>>
Mysql-触发器及创建触发器失败原因
查看>>
MySQL-连接
查看>>
mysql-递归查询(二)
查看>>
MySQL5.1安装
查看>>
mysql5.5和5.6版本间的坑
查看>>
mysql5.5最简安装教程
查看>>
mysql5.6 TIME,DATETIME,TIMESTAMP
查看>>
mysql5.6.21重置数据库的root密码
查看>>
Mysql5.6主从复制-基于binlog
查看>>
MySQL5.6忘记root密码(win平台)
查看>>
MySQL5.6的Linux安装shell脚本之二进制安装(一)
查看>>
MySQL5.6的zip包安装教程
查看>>