我正在使用Python 2.7,并且一直在试验Python的Tkinter模块。我尝试构建一个可接受两个输入的计算器,并将它们输入到我自己设计的功能中。然后我尝试定义一个函数,让我可以全局替换其中一个输入,这样它就可以被其他所有函数接受(而不是每次运行程序时都只限于两个输入)。
此解决方案完美无缺;不幸的是,它还在代码执行之前在我的命令窗口中引发了一个SyntaxWarning,我不想看到它。我已经用尽了关于抑制警告的文件,遗憾的是警告.filterwarnings()并没有得到我的救援。我被引导认为问题在于编译,而不是执行。
我很欣赏这方面的任何建议或帮助,或者有人可以告诉我如何修改我的语法以达到同样的效果。
我正在使用Button小部件,当我在他们的命令参数中使用一个函数时,它似乎只是按我想要的方式工作,所以除非有人能告诉我如何超越那里只使用函数,我不能很清楚如何修改我的语法。
以下是代码:
from Tkinter import *
n1 = int(raw_input("N1?"))
n2 = int(raw_input("N2?"))
def add():
print n1+n2
def multiply():
print n1*n2
def power():
print pow(n1,n2)
def replacen1():
N1 = int(raw_input("Enter n1 replacement here"))
n1 = N1
global n1
def replacen2():
N2 = int(raw_input("Enter n2 replacement here"))
n2 = N2
global n2
Button(text = "Add",command = add).pack(side=LEFT)
Button(text = "Multiply", command = multiply).pack(side=LEFT)
Button(text = "Power", command = power).pack(side=LEFT)
Button(text = "Replace N1?", command = replacen1).pack(side=LEFT)
Button(text = "Replace N2?", command = replacen2).pack(side=LEFT)
mainloop()
答案 0 :(得分:4)
除非它们真的不受你的控制,否则不要压制警告。阅读他们所说的内容:
SyntaxWarning: name 'n1' is assigned to before global declaration
警告表示您在将n1
声明为global n1
全局之前已分配给global n1
。因此,要修复代码,请将n1
行移至功能顶部(或指定给def replacen1():
global n1
N1 = int(raw_input("Enter n1 replacement here"))
n1 = N1
的位置上方的任何位置):
n2
对{{1}}执行相同的操作。