627|1

79

帖子

0

TA的资源

一粒金砂(高级)

【VisionFive 2:集成3D GPU RISC-V单板计算机】+09.python应用测试(zmj) [复制链接]

【VisionFive 2:集成3D GPU RISC-V单板计算机】+09.python应用测试(zmj)

本节介绍使用Python开发应用测试。

1. 代码解析

代码功能说明:

//------代码功能说明:
a.程序从tkinter模块中导入了所有内容,然后导入了tkinter.font模块以设置字体样式,最后导入了functools模块的partial函数,用于部分应用函数。
b.get_input函数接收一个entry(输入框)和一个argu(要插入的字符串),然后在entry的末尾插入argu。
c.back_space函数获取entry中的文本长度,然后删除最后一个字符。
d.delete函数获取entry中的文本,然后清空entry。
e.calc函数获取entry中的文本,然后清空entry,并在末尾插入一个空字符串。
f.main函数是程序的主入口点。它首先创建一个Tk窗口,并设置了窗口的标题和大小。然后它创建了一个Entry控件,用于用户输入数字和运算符。接着它定义了一些按钮的样式和行为,包括数字、运算符、退格键、清除键和等号键。最后,它启动了Tk的事件循环,等待用户的交互操作。
g.如果这个脚本被当作主程序运行(而不是被导入到其他脚本中),那么它会调用main函数来运行计算器程序。

//------完整代码:

from tkinter import *
import tkinter.font as tkFont
from functools import partial
def get_input(entry, argu):
     entry.insert(END, argu)
def back_space(entry):
     input_len=len(entry.get())
     entry.delete(input_len-1)
def delete(entry):
    entry.delete(0, END)
def calc(entry):
    input=entry.get()
    output=str(eval(input.strip()))
    delete(entry)
    entry.insert(END,output)
def main():
    root=Tk()
    root.title("计算器-VisionFive2")
    root.resizable(0,0)
    entry_font=tkFont.Font(size=16)  
    entry=Entry(root, justify="right", font=entry_font)
    entry.grid(row=0, column=0, columnspan=5, sticky=W+E+N+S, padx=5, pady=5)
    button_font=tkFont.Font(size=16, weight=tkFont.BOLD)
    button_bg='#AABBBB'
    button_active_bg='#55EE55'
    myButton=partial(Button, root, bg=button_bg, padx=15, pady=12, 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=W+E+N+S)
    button13=myButton(text='.',command=lambda : get_input(entry, '.'))
    button13.grid(row=4, column=2, pady=5)
    button14=myButton(text='/',command=lambda : get_input(entry, '/'))
    button14.grid(row=4, column=3, pady=5)
    button15=myButton(text='<-',command=lambda : back_space(entry))
    button15.grid(row=5, column=0, pady=5)
    button16=myButton(text='C',command=lambda : delete(entry))
    button16.grid(row=5, column=1, pady=5)
    button17=myButton(text='=',command=lambda : calc(entry))
    button17.grid(row=5, column=2, columnspan=2, padx=3, pady=5, sticky=W+E+N+S)
    root.mainloop()
if __name__ == '__main__':
    main()

 

2. 测试效果

测试效果如下:

//------测试效果:

image-20230814212731305.png

 

//------测试效果(视频):

python_calculator

 

//------END

最新回复

楼主还能对代码解析一番,好啊   详情 回复 发表于 2023-8-19 09:21

回复
举报

1632

帖子

0

TA的资源

五彩晶圆(初级)

楼主还能对代码解析一番,好啊


回复
您需要登录后才可以回帖 登录 | 注册

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表