2013-05-11 19 views
1

我使用Python 2.7,并且一直在试验Python的Tkinter模块。我试图建立一个计算器,接受两个输入并将它们输入到我自己设计的函数中。然后,我尝试定义一个函数,它可以让我全局替换其中一个输入,以便每个函数都可以接受它(而不是每次运行程序时都只限于两个输入)。编译前抑制Python中的SyntaxWarning

该解决方案完美工作;不幸的是,它还在代码执行之前在我的命令窗口中引发了一个SyntaxWarning,我不想看到它。我已经用尽了压制警告的文档,可悲的是,警告.filterwarnings()不会帮助我解决。我被带领认为问题在于汇编,而不是执行。

我很感谢在这方面的任何建议或帮助,或者如果有人能告诉我如何修改我的语法来实现相同的效果。

我使用的按钮小部件似乎只能按我希望它们在我们的命令参数中使用某个函数时的方式工作,因此除非有人能告诉我如何超越仅使用函数,不知道如何修改我的语法。

下面的代码:

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() 

回答

4

,除非他们是真正在你的控制不要抑制警告。阅读他们在说什么:

SyntaxWarning: name 'n1' is assigned to before global declaration 

警告说你global n1声明它作为一个全球性之前,你分配给n1。因此,要解决你的代码,移动global n1线到你的函数(或者分配给n1现货上述的任何地方)的顶部:

def replacen1(): 
    global n1 

    N1 = int(raw_input("Enter n1 replacement here")) 
    n1 = N1 

做同样的事情n2

+0

谢谢,完美的作品! – 2013-05-11 02:05:18