3
我是新學習python,我試圖用標準Tkinter庫創建一個計算器。每次我嘗試建立我遇到以下錯誤:Python 3遇到[解碼錯誤 - 輸出不是utf-8](崇高文本2)
File "C:\Python33\calc.py", line 10
[Decode error - output not utf-8]
[Finished in 0.1s with exit code 1]
構建系統是站在蟒蛇,或者我需要改變pyhton的其包內的東西嗎? 感謝提前:)
這裏是我的代碼:
from tkinter import *
class Calculon:
def __init__(self, master):
# the self variable represents the instance variable of the object
buttonText = ["1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", "0", ".", "=", "/"]
"""
The instance variable is bind to a anonymous lamda function which doesnt need an include statement
When a event ocurres, an handler is called
"""
master.bind(‘<Escape>’, lambda e: master.quit())
master.bind(‘<Return>’, lambda e: self.buttonPress(「=」))
"""
loops trought each in buttonText array
The following line binds each character to its own buttonPress
"""
for each in buttonText:
master.bind(each, lambda e: self.buttonPress(repr(e.char).strip(「‘」)))
"""
Declaring the result has a string value
Creation of labels which contain the result value's
while grid orginazes the table
"""
self.result = StringVar()
self.result.set(「0″)
self.result = Label(master, anchor=E, textvariable=self.result, justify=RIGHT, bg=」white」)
self.result.grid(row=0, column=0, columnspan=4, sticky=E+N+S+W)
self.operator = StringVar()
self.operator.set(「」)
self.operator = Label(master, anchor=W, textvariable=self.operator, justify=LEFT, bg=」grey」)
self.operator.grid(row=0, column=0, sticky=W+N+S+E)
self.temp = 「」
self.operations = {「+」: self.add, 「-」: self.sub, 「*」: self.mul, 「/」:self.div}
self.menubar = Menu(master)
self.pullDown = Menu(self.menubar, tearoff=0)
self.pullDown.add_separator()
self.pullDown.add_command(label=」Quit」, command=master.quit)
self.menubar.add_cascade(label=」Do it」, menu=self.pullDown)
master.configure(menu=self.menubar)
"""
Loop to limit the ammount of labels per row
"""
rowC = 1
colC = 0
for item in buttonText:
if colC > 3:
colC = 0
rowC = rowC + 1
Button(master, text=str(item), command=lambda i=item:self.buttonPress(i)).grid(row=rowC, column=colC)
colC = colC + 1
def add(self, a, b):
return a+b
def sub(self, a, b):
return a-b
def mul(self, a, b):
return a*b
def div(self, a, b):
if b != 0:
return a/b
else:
return 「division by zero」
def buttonPress(self, c):
if ((ord(c) > 47) and (ord(c) < 58)) or (ord(c) == 46):
if len(self.result.get()) > 10:
return -1
if self.result.get() != 「0″:
self.result.set(self.result.get() + c)
else:
self.result.set(c)
elif (ord(c) > 41) and (ord(c) < 48) or ord(c) == 61:
if self.operator.get() == 「」 or self.operator.get() == 「=」:
self.operator.set(c)
self.temp = int(self.result.get())
elf.result.set(「0″)
else:
result = self.operations[self.operator.get()](self.temp, int(self.result.get()))
if result < 0:
self.result.configure(fg=」red」)
else:
self.result.configure(fg=」black」)
self.result.set(str(result))
self.operator.set(c)
def main():
root = Tk()
calc = Calculon(root)
root.mainloop()
root.destroy()
if __name__ == 「__main__」:
main()