首页 > 解决方案 > 赋值前引用的 Tkinter 变量“Num1”

问题描述

我对 Tkinter 很陌生,不知道自己在做什么。我有这两个输入小部件,输入时它们都是数字。每当我按下“运行”按钮来乘以数字时,我都会得到一个“分配错误之前引用的变量”,我不知道为什么。这是代码:

    from tkinter import *

    root = Tk()

    def myClick1():
        Num1 = int(Num1.get())
        Num2 = int(Num2.get())
        print(Num1 * Num2)
    Num1 = Entry(root, bg = "black", fg = "red", border = 10, justify = RIGHT)
    Num2 = Entry(root, bg = "black", fg = "blue", border = 10, justify = RIGHT)

    RAD2=Radiobutton(root, text = "Run", command = myClick1, fg = "red", bg = "black", border = 12)

    RAD2.pack()
    Num1.pack()
    Num2.pack()
    root.mainloop()

任何帮助,将不胜感激。

标签: pythontkinter

解决方案


在 python 中,全局变量如Num1Num2是全局可用的,顾名思义。但是,如果您尝试为函数中的变量分配新值,该变量会自动变为本地变量。

因此,当你这样做时Num1 = int(Num1.get())Num1被认为是一个局部变量。并且由于您没有分配Num1在此语句之前命名的局部变量,因此Num1.get()失败。

如果您将局部变量重命名为其他名称Num1Num2这将起作用。

def myClick1():
    num1 = int(Num1.get())
    num2 = int(Num2.get())
    print(num1 * num2)

推荐阅读