python小程序---20以内的加减法进位运算

这篇博客讲述了作者为同事家的一年级孩子制作的一个Python+Tkinter程序,用于进行20以内的加减法进位运算练习。程序能随机出题并检查答案正确性。在打包成exe过程中,作者经历了从py2exe到cx_freeze的转换,并解决了程序闪退和界面显示问题。
部署运行你感兴趣的模型镜像

同事家的小朋友上了一年级,学校布置作业要学习20以内的加减法运算,而且必须是有进位或者减位的。

比如18-9=9 或者7+6=13

觉得专门写一堆题目没啥意思,于是用python+tkinter写个小程序,然后用cx_freeze打包成exe文件,能够随机出题,并检验回答是否正确。新手上路,难免遇到很多问题。

代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-
from tkinter import *
import random


def main():
  a=random.randint(1,18)
  if a <10:
    b=random.randint(10-a,9)
    c=a+b
    result="%d  +  %d" %(a,b)
    return (result,c)
  if a>=10:
    b=random.randint(a-9,9)
    c=a-b
    result="%d  -  %d" %(a,b)
    return (result,c)

def check():

    if int(result.get())==int(t[1]):
        h="恭喜你!回答正确"
        hint.set(h)

    else:
        h="抱歉!回答错误!"
        hint.set(h)
        result.set('')
        
def next():
    global t
    t=main()
    e.set(t[0])
    result.set('')
    hint.set('')
    
    
master = Tk()
master.geometry('500x500+100+100') 
master.title("20以内加减进退位运算")
Label(master,text="题目").grid(row=0)
Label(master,text="答案").grid(row=1)
Label(master,text="信息").grid(row=4)
e = StringVar()
result=StringVar()
hint=StringVar()
e1 = Entry(master,textvariable=e)
e2 = Entry(master,textvariable=result)
e3 = Entry(master,textvariable=hint)
t=main()
e.set(t[0])
result.get()

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=4, column=1)

btn=Button(master,text = '确定',command = check)
btn2=Button(master,text = '下一题',command = next)
btn.grid(row=2,column=2)
btn2.grid(row=2,column=4)

master.mainloop()


python版本是3.3.5,使用的cx_freeze版本是4.3.2

打包的时候一开始是使用py2exe打包的,发现总是有问题,网上都说py2exe对python3不支持之类的,于是换了cx_freeze。

结果也是遇到各种问题,还好基本都能网络上找到,到最后,打包成exe后,双击exe文件,直接弹出一个小黑框,然后一闪而过,在cmd下面执行exe文件也没有任何报错。。。

于是各种搜索是什么问题,找不到原因,于是换了Python版本,cx_freeze版本,还是这样的情况。都要放弃的时候,无意间看到有个他人的程序中加了这么一段代码:

master.mainloop()
死马当活马医,结果真就弹窗了。。。

然后又有一个小问题,那就是程序可以正常显示了,但同时还有个小黑框也显示出来了。。。这个好解决,在打包exe时候,cxfreeze命令指定参数即可:

cxfreeze calc_20.py  --base-name=win32gui 

程序界面:


当你在答案框输入答案后,会判断答案是否正确:


如果回答错误,则会清空答案框的内容,提醒你再次回答:



回答正确后可以点击下一题,则可继续答题。

界面很丑,tkinter都是现学现弄的,但自己还是比较满意的,起码可以看到自己的进步。加油。


您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值