这确实是一个Pycharm-IDE问题——python/wx错误已修复。
一个看似无害的改变打破了
raceText.SetLabel()
调用(只需在静态文本控件中设置文本)。所以我在
item = self.items[itemDex]
:
def __init__(self):
# ...
self.raceText = staticText(self,u'') # see below for staticText definition
def EvtListBox(self,event):
"""Responds to listbox selection."""
itemDex = event.GetSelection()
item = self.items[itemDex] # breakpoint here
face = self.data[item]
self.nameText.SetLabel(face.pcName)
self.raceText.SetLabel(face.getRaceName()) # this
瞧,瞧
self.raceText.SetLabel(face.getRaceName())
现在成功了。
那么这是怎么可能的呢?设置断点触发什么?
编辑:更多数据:
最初中断SetLabel()调用的是以下提交:
-def staticText(parent,label=u'',pos=defPos,size=defSize,style=0,name=u"staticText",id=defId,):
+def staticText(parent, label=u'', pos=defPos, size=defSize, style=0,
+ noAutoResize=True, name=u"staticText"):
"""Static text element."""
- return wx.StaticText(parent,id,label,pos,size,style,name)
+ if noAutoResize: style |= wx.ST_NO_AUTORESIZE
+ return wx.StaticText(parent, defId, label, pos, size, style, name)
将noAutoResize的默认值设置为False会消除错误-文本已设置,但
wx.ST_NO_AUTORESIZE
将阻止控件从
u''
-因此没有显示文本。所以这是一个普通的老bug。
问题仍然存在
为什么在调试器中设置断点
self.raceText.SetLabel()
显示文本
?
编辑:一定要阅读答案-健康检查