경험 많은 C 프로그래머, 파이썬에서 총 noob. 파이썬 wx 사용하기. 객체라는 액션의 정의에서 , 나는 선언AttributeError : '작업'객체에 'text1'속성이 없습니다.
def OnComboSelect(self, e):
print self.combo.GetValue()
win = Action(self, "Action")
win.text2.SetLabel("testing")
win.SetLabel (예, "액션 :
self.text2 = wx.StaticText(panel, label="Name")
을하지만 난 콜백에 주요 모듈에 액세스하기 위해 갈 때 ")
나는
AttributeError: 'Action' object has no attribute 'text2'
(나는 모든 24 '의 QUES을 통해 내가 갈 것을 추가 서둘러 도착 이미 당신의 대답을 가지고 있을지도 모르지만 관련성이 없다는 것을 발견했다.). 모든 철자를 확인하고 다시 검사했습니다. 는 또한 액션의 정의에이 기능을 추가하는 시도 : 나는 호출하면 같은 오류 얻을
def SetLabel(self, event, label):
self.text2.SetLabel("testing")
: (! 놀라운)
win.text2.SetLabel("testing")
합니다. (그러나 SetLabel을 정의하는 데 대한 불만은 없습니다.) 이 필요한 경우 전체 코드입니다 (그렇게 떨어져을 수정하는 내 작은 투쟁에서 간단한 샘플 코드는, 그것을 잘 정렬입니다.) :
#!/usr/bin/python
# -*- coding: utf-8 -*-
# action.py
import wx
class Action(wx.Frame):
def __init__(self, parent, title):
super(Action, self).__init__(parent, title=title,
size=(450, 350))
def InitUI(self):
panel = wx.Panel(self)
sizer = wx.GridBagSizer(5, 5)
text1 = wx.StaticText(panel, label="Ink Cartridge Type")
sizer.Add(text1, pos=(0, 0), flag=wx.TOP|wx.LEFT|wx.BOTTOM,
border=15)
icon = wx.StaticBitmap(panel, bitmap=wx.Bitmap('ink64.png'))
sizer.Add(icon, pos=(0, 4), flag=wx.TOP|wx.RIGHT|wx.ALIGN_RIGHT,
border=5)
line = wx.StaticLine(panel)
sizer.Add(line, pos=(1, 0), span=(1, 5),
flag=wx.EXPAND|wx.BOTTOM, border=10)
self.text2 = wx.StaticText(panel, label="Name")
sizer.Add(text2, pos=(2, 0), flag=wx.LEFT, border=10)
self.tc1 = wx.TextCtrl(panel)
sizer.Add(self.tc1, pos=(2, 1), span=(1, 3), flag=wx.TOP|wx.EXPAND)
text3 = wx.StaticText(panel, label="Package")
sizer.Add(text3, pos=(3, 0), flag=wx.LEFT|wx.TOP, border=10)
tc2 = wx.TextCtrl(panel)
sizer.Add(tc2, pos=(3, 1), span=(1, 3), flag=wx.TOP|wx.EXPAND,
border=5)
button1 = wx.Button(panel, label="Browse...")
sizer.Add(button1, pos=(3, 4), flag=wx.TOP|wx.RIGHT, border=5)
text4 = wx.StaticText(panel, label="Extends")
sizer.Add(text4, pos=(4, 0), flag=wx.TOP|wx.LEFT, border=10)
combo = wx.ComboBox(panel)
sizer.Add(combo, pos=(4, 1), span=(1, 3),
flag=wx.TOP|wx.EXPAND, border=5)
button2 = wx.Button(panel, label="Browse...")
sizer.Add(button2, pos=(4, 4), flag=wx.TOP|wx.RIGHT, border=5)
sb = wx.StaticBox(panel, label="Optional Attributes")
boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
boxsizer.Add(wx.CheckBox(panel, label="Public"),
flag=wx.LEFT|wx.TOP, border=5)
boxsizer.Add(wx.CheckBox(panel, label="Generate Default Constructor"),
flag=wx.LEFT, border=5)
boxsizer.Add(wx.CheckBox(panel, label="Generate Main Method"),
flag=wx.LEFT|wx.BOTTOM, border=5)
sizer.Add(boxsizer, pos=(5, 0), span=(1, 5),
flag=wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT , border=10)
button3 = wx.Button(panel, label='Help')
sizer.Add(button3, pos=(7, 0), flag=wx.LEFT, border=10)
button4 = wx.Button(panel, label="Ok")
sizer.Add(button4, pos=(7, 3))
# Set event handlers
button4.Bind(wx.EVT_BUTTON, self.OnButton)
button5 = wx.Button(panel, label="Cancel")
sizer.Add(button5, pos=(7, 4), span=(1, 1),
flag=wx.BOTTOM|wx.RIGHT, border=5)
sizer.AddGrowableCol(2)
panel.SetSizer(sizer)
def OnButton(self, event):
self.tc1.GetValue()
def SetLabel(self, event, label):
self.text2.SetLabel("testing")
참고 사항 : 다른 많은 OO 언어와 달리 Python에는 멤버 메소드에 암시 적 인스턴스 범위가 없습니다. 인스턴스의 속성을 참조하려면 먼저 메소드 범위에서 리 바인드하지 않는 한 매번 'self'에서 명시 적으로 참조해야합니다. –