闲暇时间用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
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()
|
下面是运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/wangyiyan315/article/details/19435081