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