1

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

该解决方案完美运行;不幸的是,它还在执行代码之前在我的命令窗口中引发了一个 SyntaxWarning,我不想看到它。我已经用尽了有关抑制警告的文档,可悲的是,warnings.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()
4

1 回答 1

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

于 2013-05-11T01:16:31.347 回答