孤独的追梦者 2022-05-10 22:36 采纳率: 90%
浏览 44
已结题

在自定义函数中调用自定义函数,引发局部变量值自发改变的问题

问题:每次我点确定是会运行fun函数,fun函数里面我只想引用creatAuthCode里上一次运行的结果,但是每次运行fun函数 ,creatAuthCode函数也跟着运行,导致creatAuthCode每次输出的值都不一样,因此fun函数每次应用额函数也不一样,我只想做一个简单的登录带验证码数字的界面,并且当密码 账号 验证码输入正确 才显示登录成功。

from tkinter import *
import tkinter as tk
import random
#定义函数,功能为生成数字组成的6位随机验证码
def creatAuthCode():
    str1 = ""
    for i in range(2):
        ch = chr(random.randrange(ord('0'), ord('9') + 1))
        str1 += ch
    print(str1)
    txt.set(str1)
x= creatAuthCode    
#定义函数,判断输入是否正确
def fun():
    d1 = text1.get()
    d2 = text2.get()
    if d1=="1"and d2=="1" and code==creatAuthCode():
        w="登陆成功!"
    elif( d1==""or d2=="") :
        w="请输入正确的格式"
    else:
        w="输入错误!"  
    t.insert('insert',w)

#创建根窗口
root=Tk()
root.title("登录界面")
#root.resizable(False,False)
root.geometry("400x400")


#设置用户账号输入框
ID=Label(root,text="账号:")
ID.grid(row=0,column=1)
text1=Entry(root)
text1.grid(row=0,column=2)

#设置用户密码码输入框
password=Label(root,text="密码:")
password.grid(row=1,column=1)
text2=Entry(root)
text2.grid(row=1,column=2)

#设置验证码输入框
code=Label(root,text="验证码:")
code.grid(row=2,column=1)
code=Entry(root)
code.grid(row=2,column=2)



#设置获取验证码的按钮
txt=StringVar()
txt.set("点击")
codestr=Button(root,textvariable=txt,command=creatAuthCode,fg="red")
codestr.grid(row=2,column=3)


#设置登录按钮
c=tk.Button(root,text="确定",font=('宋体',20),command=fun)
c.place(relx=0.5,rely=0.8,anchor=CENTER)

#显示框
t=tk.Text(root,font=('Arial',20),height=1,width=20)
t.grid(row=4,column=2)

root.mainloop()




  • 写回答

2条回答 默认 最新

  • 溪风沐雪 2022-05-10 22:43
    关注

    我想说的是你是否可以通过插入代码块的方式提供代码,这么贴进来不仅调格式费劲,代码也可能会错,没法调试啊

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 戒酒的李白-Lisage Python领域新星创作者 2022-05-10 22:44
    关注

    用闭包即可解决,内部函数的返回值作为外部函数引用,在闭包和闭包中间设变量,叫做内部变量,只会随着内部函数的调用而改变,在整个闭包外部的叫做全局变,两个函数都用的话都会影响。

    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 修改了问题 5月10日
  • 创建了问题 5月10日

悬赏问题

  • ¥15 stata合并季度数据和日度数据
  • ¥15 c语言练习:统计词频
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应,发到邮箱2644980770@qq.com
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色
  • ¥50 监控摄像头 乐橙和家亲版 保存sd卡的文件怎么打开?视频怎么播放?
  • ¥15 Python的Py-QT扩展库开发GUI
  • ¥60 提问一下周期性信信号的问题
  • ¥15 jtag连接不上fpga怎么办