python - 赋值前引用的 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()
任何帮助,将不胜感激。
解决方案
在 python 中,全局变量如Num1
和Num2
是全局可用的,顾名思义。但是,如果您尝试为函数中的变量分配新值,该变量会自动变为本地变量。
因此,当你这样做时Num1 = int(Num1.get())
,Num1
被认为是一个局部变量。并且由于您没有分配Num1
在此语句之前命名的局部变量,因此Num1.get()
失败。
如果您将局部变量重命名为其他名称Num1
,Num2
这将起作用。
def myClick1():
num1 = int(Num1.get())
num2 = int(Num2.get())
print(num1 * num2)
推荐阅读
- c# - xUnit 检查类或方法上是否存在属性
- javascript - 如何从 asp.net 的母版页导入 jquery 插件
- python - 使用 CLI 在 IBM Cloud 中推送 Python Flask Web 服务时启动不成功
- android - 如何从 Activity B/Class B 在 firebase 数据库中创建对象,然后在 Activity A/ClassA 中列出所述对象
- r - 计算分组平均值并填充到 R 的新列中
- javascript - Javascript 更改 DOM 是否总是导致 UI 更新?
- javascript - 包括对现有网页的反应 - 多个反应组件
- css - 具有直接子级的 Vue-loader 深度选择器
- javascript - Vue.js 似乎没有在变量更改时更新 DOM
- django - 如何将 view.py 中计算的输出与 form.py 中的其余数据一起保存