2013-05-11 23 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