Python 提供了多个图形开发界面的库。Tkinter就是其中之一。 Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
效果如下图
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
import tkinter #导入tkinter模块
root = tkinter.Tk()
root.minsize( 280 , 500 )
root.title( '李蛟龙的计算器' )
#1.界面布局
#显示面板
result = tkinter.StringVar()
result. set ( 0 ) #显示面板显示结果1,用于显示默认数字0
result2 = tkinter.StringVar() #显示面板显示结果2,用于显示计算过程
result2. set ('')
#显示版
label = tkinter.Label(root,font = ( '微软雅黑' , 20 ),bg = '#EEE9E9' ,bd = '9' ,fg = '#828282' ,anchor = 'se' ,textvariable = result2)
label.place(width = 280 ,height = 170 )
label2 = tkinter.Label(root,font = ( '微软雅黑' , 30 ),bg = '#EEE9E9' ,bd = '9' ,fg = 'black' ,anchor = 'se' ,textvariable = result)
label2.place(y = 170 ,width = 280 ,height = 60 )
#数字键按钮
btn7 = tkinter.Button(root,text = '7' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '7' ))
btn7.place(x = 0 ,y = 285 ,width = 70 ,height = 55 )
btn8 = tkinter.Button(root,text = '8' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '8' ))
btn8.place(x = 70 ,y = 285 ,width = 70 ,height = 55 )
btn9 = tkinter.Button(root,text = '9' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '9' ))
btn9.place(x = 140 ,y = 285 ,width = 70 ,height = 55 )
btn4 = tkinter.Button(root,text = '4' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '4' ))
btn4.place(x = 0 ,y = 340 ,width = 70 ,height = 55 )
btn5 = tkinter.Button(root,text = '5' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '5' ))
btn5.place(x = 70 ,y = 340 ,width = 70 ,height = 55 )
btn6 = tkinter.Button(root,text = '6' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '6' ))
btn6.place(x = 140 ,y = 340 ,width = 70 ,height = 55 )
btn1 = tkinter.Button(root,text = '1' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '1' ))
btn1.place(x = 0 ,y = 395 ,width = 70 ,height = 55 )
btn2 = tkinter.Button(root,text = '2' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '2' ))
btn2.place(x = 70 ,y = 395 ,width = 70 ,height = 55 )
btn3 = tkinter.Button(root,text = '3' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '3' ))
btn3.place(x = 140 ,y = 395 ,width = 70 ,height = 55 )
btn0 = tkinter.Button(root,text = '0' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda : pressNum( '0' ))
btn0.place(x = 70 ,y = 450 ,width = 70 ,height = 55 )
#运算符号按钮
btnac = tkinter.Button(root,text = 'AC' ,bd = 0.5 ,font = ( '黑体' , 20 ),fg = 'orange' ,command = lambda :pressCompute( 'AC' ))
btnac.place(x = 0 ,y = 230 ,width = 70 ,height = 55 )
btnback = tkinter.Button(root,text = '←' ,font = ( '微软雅黑' , 20 ),fg = '#4F4F4F' ,bd = 0.5 ,command = lambda :pressCompute( 'b' ))
btnback.place(x = 70 ,y = 230 ,width = 70 ,height = 55 )
btndivi = tkinter.Button(root,text = '÷' ,font = ( '微软雅黑' , 20 ),fg = '#4F4F4F' ,bd = 0.5 ,command = lambda :pressCompute( '/' ))
btndivi.place(x = 140 ,y = 230 ,width = 70 ,height = 55 )
btnmul = tkinter.Button(root,text = '×' ,font = ( '微软雅黑' , 20 ),fg = "#4F4F4F" ,bd = 0.5 ,command = lambda :pressCompute( '*' ))
btnmul.place(x = 210 ,y = 230 ,width = 70 ,height = 55 )
btnsub = tkinter.Button(root,text = '-' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda :pressCompute( '-' ))
btnsub.place(x = 210 ,y = 285 ,width = 70 ,height = 55 )
btnadd = tkinter.Button(root,text = '+' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda :pressCompute( '+' ))
btnadd.place(x = 210 ,y = 340 ,width = 70 ,height = 55 )
btnequ = tkinter.Button(root,text = '=' ,bg = 'orange' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda :pressEqual())
btnequ.place(x = 210 ,y = 395 ,width = 70 ,height = 110 )
btnper = tkinter.Button(root,text = '%' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda :pressCompute( '%' ))
btnper.place(x = 0 ,y = 450 ,width = 70 ,height = 55 )
btnpoint = tkinter.Button(root,text = '.' ,font = ( '微软雅黑' , 20 ),fg = ( '#4F4F4F' ),bd = 0.5 ,command = lambda :pressCompute( '.' ))
btnpoint.place(x = 140 ,y = 450 ,width = 70 ,height = 55 )
#操作函数
lists = [] #设置一个变量 保存运算数字和符号的列表
isPressSign = False #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮
isPressNum = False
#数字函数
def pressNum(num): #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上
global lists #全局化lists和按钮状态isPressSign
global isPressSign
if isPressSign = = False :
pass
else : #重新将运算符号状态设置为否
result. set ( 0 )
isPressSign = False
#判断界面的数字是否为0
oldnum = result.get() #第一步
if oldnum = = '0' : #如过界面上数字为0 则获取按下的数字
result. set (num)
else : #如果界面上的而数字不是0 则链接上新按下的数字
newnum = oldnum + num
result. set (newnum) #将按下的数字写到面板中
#运算函数
def pressCompute(sign):
global lists
global isPressSign
num = result.get() #获取界面数字
lists.append(num) #保存界面获取的数字到列表中
lists.append(sign) #讲按下的运算符号保存到列表中
isPressSign = True
if sign = = 'AC' : #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0
lists.clear()
result. set ( 0 )
if sign = = 'b' : #如果按下的是退格‘',则选取当前数字第一位到倒数第二位
a = num[ 0 : - 1 ]
lists.clear()
result. set (a)
#获取运算结果函数
def pressEqual():
global lists
global isPressSign
curnum = result.get() #设置当前数字变量,并获取添加到列表
lists.append(curnum)
computrStr = ''.join(lists) #讲列表内容用join命令将字符串链接起来
endNum = eval (computrStr) #用eval命令运算字符串中的内容
# a = str(endNum)
# b = '='+a #给运算结果前添加一个 ‘=' 显示 不过这样写会有BUG 不能连续运算,这里注释,不要 =
# c = b[0:10] #所有的运算结果取9位数
result. set (endNum) #讲运算结果显示到屏幕1
result2. set (computrStr) #将运算过程显示到屏幕2
lists.clear() #清空列表内容
root.mainloop()
|
总结
以上就是本文关于Python编程使用tkinter模块实现计算器软件完整代码示例的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://www.cnblogs.com/sunshine-long/p/7902721.html