+ -
当前位置:首页 → 问答吧 → wxpython 写了个界面 点击确定按钮时提示 toatlText未定义 请高手指点

wxpython 写了个界面 点击确定按钮时提示 toatlText未定义 请高手指点

时间:2011-10-23

来源:互联网

Python code

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
import cash_system

class TextFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"商场收银系统",size=(220,300))
        panel = wx.Panel(self,-1)
        basicLabel = \
        wx.StaticText(panel,-1,"单价:",pos=(5,5),size=(50,-1),style=wx.EXPAND)
        basicText = wx.TextCtrl(panel,-1,pos=(60,30),size=(90,-1))
        basicText.SetInsertionPoint(0)

        amountLabel = \
        wx.StaticText(panel,-1,"数量:",pos=(5,5),size=(50,-1))
        amountText = wx.TextCtrl(panel,-1,pos=(60,30),size=(90,-1))
        
        confirmButton = wx.Button(panel,-1,"确定",pos=(120,30),size=(60,-1))
        confirmButton.Bind(wx.EVT_BUTTON,self.totalFuc)
        resetButton = wx.Button(panel,-1,"重置",pos=(120,30),size=(60,-1))

        calculateModeLabel = \
                wx.StaticText(panel,-1,"计算方式:",pos=(5,70),size=(60,-1))
        calculateModeList = ['9折','85折','8折','75折','7折']
        wx.Choice(panel,-1,(80,70),choices=calculateModeList)

        multiText = \
        wx.TextCtrl(panel,-1,pos=(5,100),size=(200,100),style=wx.TE_MULTILINE)
        multiText.SetInsertionPoint(0)
        
        totalLabel = wx.StaticText(panel,-1,"总计:",pos=(5,220),size=(60,-1))
        toatlText = wx.TextCtrl(panel,-1,"0.0",pos=(70,220),size=(60,-1))

        sizer = wx.FlexGridSizer(rows=3,cols=3,hgap=5,vgap=5)
        sizer.AddMany([basicLabel,basicText,confirmButton,amountLabel,amountText,resetButton])
        panel.SetSizer(sizer)
    
    def totalFuc(self,event):
        toatlText.value = 900

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = TextFrame()
    frame.Show()
    app.MainLoop()

作者: bolome   发布时间: 2011-10-23

这是变量作用域的问题

改成

Python code
self.toatlText = wx.TextCtrl(panel,-1,"0.0",pos=(70,220),size=(60,-1))


Python code
self.toatlText.value = 900

作者: fox000002   发布时间: 2011-10-23

你在__init__里定义的是局部变量,要在实例中引用,需要这样定义:
self.toatlText = wx.TextCtrl(panel,-1,"0.0",pos=(70,220),size=(60,-1))
然后在别的方法中引用:
self.toatlText.value=...

作者: panzifei   发布时间: 2011-10-23

引用 1 楼 fox000002 的回复:
这是变量作用域的问题

改成

Python code
self.toatlText = wx.TextCtrl(panel,-1,"0.0",pos=(70,220),size=(60,-1))


Python code
self.toatlText.value = 900


呵呵,楼上的比我早先一步

作者: panzifei   发布时间: 2011-10-23