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原理

其他(感悟、思考等):多拓展实践

posted @ 2022-04-04 21:11  杨昊允  阅读(22)  评论(0编辑  收藏  举报