2013-10-26 28 views
0

我必須用Tkinter創建一個Python函數計算器,它可以處理2個變量並提供退出。還需要有一個錯誤消息。我已經制定了計算器並定義了功能,但沒有任何反應。此外,任何想法如何添加在錯誤消息。現在當你按下一個按鈕時,錯誤消息(插入函數的名稱)缺少1個需要的位置參數:'app'。我完全陷入困境,無法弄清楚。我顯然對此很新。我相信這很簡單。謝謝!Python中的數學函數Tkinter和錯誤消息

from tkinter import *  
from math import * 
app = Tk() 
app.title('Calculator') 
app.geometry('400x500') 

Label(app, text = "Welcome to Calculator 2013. Enjoy!").pack(padx = 10, pady = 10) 
Label(app, text = "Enter both of your variables and then pick your computations below.").pack(pady = 10) 

global var1, var2, total 
Label(text='First Variable').pack() 
var1 = Entry() 
var1.insert(0,0) 
var1.pack() 
Label(text='Final Variable').pack() 
var2 = Entry() 
var2.insert(0,0) 
var2.pack() 
Label(text='Total').pack() 
Total = Entry() 
Total.pack() 


def add(): 
    global var1, var2, total 
    first = float(var1.get()) 
    second = float(entry.get()) 
    total = first + second 
    total.delete(0,END) 
    total.insert(0, str(total))  
def subtract(app): 
    global var1, var2, total 
    first = float(var1.get()) 
    second = float(var2.get()) 
    total = first - second 
    total.delete(0,END) 
    total.insert(0, str(total)) 
def divide(app): 
    global var1, var2, total 
    first = float(var1.get()) 
    second = float(var2.get()) 
    total = first/second 
    total.delete(0,END) 
    total.insert(0, str(total)) 
def multiply(app): 
    global var1, var2, total 
    first = float(var1.get()) 
    second = float(var2.get()) 
    total = first * second 
    total.delete(0,END) 
    total.insert(0, str(total)) 
def clear(app): 
    global var1, var2, total 
    var1.delete(0,END) 
    var2.delete(0,END) 
    total.delete(0,END) 
def quit(app): 
    app.destroy() 


b_add = Button(app, text="+", bg="green", fg="black", width = 5, font=12, command = add).pack(side=LEFT) 
b_sub = Button(app, text="-", bg="red", fg="white", width = 5, font=12, command = subtract).pack(side=LEFT) 
b_sub = Button(app, text="*", bg="blue", fg="white", width = 5, font=12, command = multiply).pack(side=LEFT) 
b_div = Button(app, text="/", bg="yellow", fg="black", width = 5, font=12, command = divide).pack(side=LEFT) 
b_clear = Button(app, text="Clear", bg="black", fg="white", width = 5, font=12, command = clear).pack(side=LEFT) 
b_exit = Button(app, text="Exit?", bg="white", fg="red", width = 40, font=12, command = quit).pack(side=LEFT) 


app.protocol("WM_DELETE_WINDOW", quit) 
app.mainloop() 
+1

歡迎的StackOverflow!感謝您發佈您的代碼,但請在您的問題中多加一點說明:您有什麼問題,您期望得到什麼結果,以及[您嘗試過什麼](http://whathaveyoutried.com)到目前爲止?通過[問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)將幫助我們更好地回答你的問題。謝謝! –

+0

@ChristianTernus接受了馬丁的建議? ;) –

回答

0

錯誤消息「missing 1 required positional點:'app'。」源自你已經定義了大部分函數來接受名爲「app」的參數,但是當你按下一個按鈕時,你沒有傳入該參數。簡單的解決方案是從函數的定義中刪除app

例如,做到這一點:

,而不是這樣的:

def multiply(app): 
    ... 
+0

非常感謝!現在我已經修復了這個錯誤消息'float'object has no attribute'delete'line 33 – user2921919

+0

@ user2921919:也許你打算使用'Total.delete()'?你有一些名爲'total'和'Total'的變量,它們意味着不同的東西。 –

+0

我不知道這很重要。謝謝。儘管如此,它仍然會給出錯誤信息。 – user2921919