0
基本上我現在正在學習Python,所以我只是使用其他人的模板,只是編輯它們。到目前爲止,我已經瞭解到Python中的縮進非常挑剔。 然而,我卡住了,我想我已經正確地縮進並定義好了,但我仍然在控制檯中看到這個錯誤。 (窗口)名稱錯誤和其他?
(是的,我知道這是尚未完成的)
"...\documents\python_files>python calc.py
Traceback (most recent call last):
File "calc.py", line 20, in <module>
class Calculator(wx.Dialog):
File "calc.py", line 46, in Calculator
b = wx.Button(self, -1, label)
NameError: name 'self' is not defined"
這裏是我的代碼(我認爲我把它放在這裏的代碼格式):
# -*- coding: utf-8 -*-
from __future__ import division
__author__ = 'Sean'
__version__ = '0.0.2'
#Calculator GUI:
# ____________v
#[(][)][^][log]
#[C][±][√][%]
#[7][8][9][/]
#[4][5][6][*]
#[1][2][3][-]
#[0][.][+][=]
import wx
from math import *
class Calculator(wx.Dialog):
'''Main calculator dialog'''
def __init__(self):
title = 'Calculator version %s' % __version__
wx.Dialog.__init__(self, None, -1, title)
sizer = wx.BoxSizer(wx.VERTICAL) # Main vertical sizer
# ____________v
self.display = wx.ComboBox(self, -1)
sizer.Add(self.display, 0, wx.EXPAND)
#[(][)][^][log]
#[C][±][√][%]
#[7][8][9][/]
#[4][5][6][*]
#[1][2][3][-]
#[0][.][+][=]
gsizer = wx.GridSizer(4,6)
for row in (("(",")","^","log"),
("C","±","√","%"),
("7", "8", "9", "/"),
("4", "5", "6", "*"),
("1", "2", "3", "-"),
("0", ".", "+", "=")):
for label in row:
b = wx.Button(self, -1, label)
gsizer.Add(b)
self.Bind(wx.EVT_Button,self.OnButton, b)
sizer.Add(gsizer, 1, wx.EXPAND)
b = wx.Button(self, -1, "=")
self.Bind(wx.EVT_BUTTON, self.OnButton, b)
sizer.Add(b, 0, wx.EXPAND)
self.equal = b
self.SetSizer(sizer)
sizer.Fit(self)
self.CenterOnScreen()
def OnButton(self, evt):
'''Handle button click event'''
label = evt.GetEventObject().GetLabel()
if label == '=':
try:
compute = self.display.GetValue()
if not compute.strip():
return
result = eval(compute)
self.display.Insert(compute, 0)
self.display.SetValue(str(result))
except Exception as err:
wx.LogError(str(err))
return
elif label == 'C':
self.display.SetValue('')
else:
self.display.SetValue(self.display.GetValue() + label)
self.equal.SetFocus()
if __name__ == '__main__':
app = wx.PySimpleApp()
dlg = Calculator()
dlg.ShowModal()
dlg.Destroy()
通常最好拿到一本書並閱讀它。編輯不會幫助他們,因爲沒有語法錯誤 - 可以在類體中使用代碼。 – georg
@ thg435:我添加了一個指向教程的指針。這是一個開始... –
謝謝你,我也應該閱讀教程,因爲編輯事情已經使我陷入死衚衕。 – user2227732