服务器之家

服务器之家 > 正文

Python Tkinter实现简易计算器功能

时间:2021-01-10 00:17     来源/作者:Cullenyy

闲暇时间用tkinter写了个简易计算器,可实现简单的加减乘除运算,用了Button和Entry2个控件,下面是代码,只是简单的用了偏函数partial,因为那么多button的大部分参数都是一样的,使用偏函数可以简化参数传递,避免同样的参数传递写N次。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# -*- coding: utf-8 -*-
#author: Cullen
 
#import the module
from Tkinter import *
import tkFont
import os
from functools import partial
from PIL import Image, ImageTk
 
def get_input(entry, argu):
  entry.insert(END, argu)
 
def backspace(entry):
  input_len = len(entry.get())
  entry.delete(input_len - 1)
 
def clear(entry):
  entry.delete(0, END)
 
def calc(entry):
  input = entry.get()
  output = str(eval(input.strip()))
  clear(entry)
  entry.insert(END, output)
 
def cal():
  root = Tk()
  root.title("Calc")
  root.resizable(0,0)
 
  entry_font = tkFont.Font(size=12)
  entry = Entry(root, justify="right", font=entry_font)
  entry.grid(row=0, column=0, columnspan=4, sticky=N+W+S+E, padx=5, pady=5)
 
  button_font = tkFont.Font(size=10, weight=tkFont.BOLD)
  button_bg = '#D5E0EE'
  button_active_bg = '#E5E35B'
 
  myButton = partial(Button, root, bg=button_bg, padx=10, pady=3, activebackground = button_active_bg)
 
  button7 = myButton(text='7', command=lambda : get_input(entry, '7'))
  button7.grid(row=1, column=0, pady=5)
 
  button8 = myButton(text='8', command=lambda : get_input(entry, '8'))
  button8.grid(row=1, column=1, pady=5)
 
  button9 = myButton(text='9', command=lambda : get_input(entry, '9'))
  button9.grid(row=1, column=2, pady=5)
 
  button10 = myButton(text='+', command=lambda : get_input(entry, '+'))
  button10.grid(row=1, column=3, pady=5)
 
  button4 = myButton(text='4', command=lambda : get_input(entry, '4'))
  button4.grid(row=2, column=0, pady=5)
 
  button5 = myButton(text='5', command=lambda : get_input(entry, '5'))
  button5.grid(row=2, column=1, pady=5)
 
  button6 = myButton(text='6', command=lambda : get_input(entry, '6'))
  button6.grid(row=2, column=2, pady=5)
 
  button11 = myButton(text='-', command=lambda : get_input(entry, '-'))
  button11.grid(row=2, column=3, pady=5)
 
  button1 = myButton(text='1', command=lambda : get_input(entry, '1'))
  button1.grid(row=3, column=0, pady=5)
 
  button2 = myButton(text='2', command=lambda : get_input(entry, '2'))
  button2.grid(row=3, column=1, pady=5)
 
  button3 = myButton(text='3', command=lambda : get_input(entry, '3'))
  button3.grid(row=3, column=2, pady=5)
 
  button12 = myButton(text='*', command=lambda : get_input(entry, '*'))
  button12.grid(row=3, column=3, pady=5)
 
  button0 = myButton(text='0', command=lambda : get_input(entry, '0'))
  button0.grid(row=4, column=0, columnspan=2, padx=3, pady=5, sticky=N+S+E+W)
 
  button13 = myButton(text='.', command=lambda : get_input(entry, '.'))
  button13.grid(row=4, column=2, pady=5)
 
  button14 = Button(root, text='/', bg=button_bg, padx=10, pady=3,
           command=lambda : get_input(entry, '/'))
  button14.grid(row=4, column=3, pady=5)
 
  button15 = Button(root, text='<-', bg=button_bg, padx=10, pady=3,
           command=lambda : backspace(entry), activebackground = button_active_bg)
  button15.grid(row=5, column=0, pady=5)
 
  button16 = Button(root, text='C', bg=button_bg, padx=10, pady=3,
           command=lambda : clear(entry), activebackground = button_active_bg)
  button16.grid(row=5, column=1, pady=5)
 
  button17 = Button(root, text='=', bg=button_bg, padx=10, pady=3,
           command=lambda : calc(entry), activebackground = button_active_bg)
  button17.grid(row=5, column=2, columnspan=2, padx=3, pady=5, sticky=N+S+E+W)
 
  root.mainloop()
 
if __name__ == '__main__':
  cal()

下面是运行结果:

Python Tkinter实现简易计算器功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/wangyiyan315/article/details/19435081

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部