20212122杨昊允实验二 《Python程序设计》实验报告
课程:《Python程序设计》
班级: 2121
姓名: 杨昊允
学号:20212122
实验教师:王志强
实验日期:2022年3月31日
必修/选修: 公选课
CSDN博客链接:
https://blog.csdn.net/Allowii/article/details/123960345
1.实验内容
用python写一个计算器,进行加、减、乘、除的简单运算
2. 实验过程及结果
实验过程:
创建一个输入组建
from tkinter import *
class App:
def __init__(self, master):
self.master = master
self.initWidgets()
self.hi = None
def initWidgets(self):
对该输入组建进行pack布局,放在容器顶部
self.show = Label(relief=SUNKEN, font=('Courier New', 24),\
width=23, bg='purple', anchor=W)
定义字符串的元组
self.show.pack(side=TOP, pady=10)
p = Frame(self.master)
p.pack(side=TOP)
字符串元组
names = ("+", "1" , "2" , "3" , "↺"
,"-", "4" , "5" , "6" , "*", "7" , "8"
, "9", "/" , "." , "0" , "%", "=")
创建Button,将Button放入p组件中
for i in range(len(names)):
为鼠标左键的单击事件绑定事件处理方法
b = Button(p, text=names[i], font=('Verdana', 20), width=5)
b.grid(row=i // 5, column=i % 5)
为鼠标左键的双击事件绑定事件处理方法
b.bind('<Button-1>', self.click)
定义一个定义输入数字次数的变量
if b['text'] == '↺': b.bind('<Button-1>', self.clean)
def click(self, event):
if(event.widget['text'] in ('0', '1', '2', '3',\
'4', '5', '6', '7', '8', '9', '.')):
if self.i == 0 :
self.show['text'] = ''
self.show['text'] = self.show['text'] + event.widget['text']
self.i = self.i + 1
print(self.i)
elif(event.widget['text'] in ('+', '-', '*', '/', '%',)):
self.show['text'] = self.show['text'] + event.widget['text']
elif(event.widget['text'] == '=' and self.show['text'] is not None):
self.hi = self.show['text']
print(self.hi)
self.show['text'] = str(eval(self.hi))
self.hi = None
self.i = 0
def clean(self, event):
self.hi = None
self.show['text'] = ''
root = Tk()
root.title("yhy的计算器")
App(root)
root.mainloop()
实验结果:
3. 实验过程中遇到的问题和解决过程
- 问题1:pack布局跟grid布局混合使用运行失败
- 问题1解决方案:补充相关知识get原理
其他(感悟、思考等):多拓展实践