闲暇时间用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