- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 wx.ComboBox 中的页面之间切换时遇到问题。错误似乎是何时更改页面两次以上。这对我来说是一个巨大的错误,我似乎无法找到解决方案。代码:
import wx
ok=[]
class oranges(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'Testing Sample',size=(1024,768))
self.frame=wx.Panel(self)
some_text=wx.StaticText(self.frame,-1,'TEXT',pos=(500,500))
more_choices=['Home','Page One']
self.adding=wx.ComboBox(self.frame,choices=more_choices,pos=(300,722),style=wx.CB_READONLY)
self.Bind(wx.EVT_COMBOBOX,self.addition,self.adding)
def addition(self,event):
if self.adding.GetValue()=='Home':
for i in ok:
i.Destroy()
ok.append(wx.StaticText(self.frame,-1,'Oranges',pos=(300,300)))
elif self.adding.GetValue()=='Page One':
for i in ok:
i.Destroy()
ok.append(wx.StaticText(self.frame,-1,'Apples',pos=(300,300)))
else: pass
if __name__ =='__main__':
app = wx.PySimpleApp()
window = oranges(parent=None,id=-1)
window.Show()
app.MainLoop()
提前致谢,我迫不及待地想看到答案!
最佳答案
您收到错误的原因是因为您在ok
中杀死了对象,但实际上并没有将它们从列表中删除。这很糟糕,因为您已经死了外壳程序中 float 的小部件。以下是当您执行addition
的每一行时列表迭代的样子:
第一次:
for i in ok: #[]
i.Destroy() #[]
ok.append(wx.StaticText(self.frame,-1,'Oranges',pos=(300,300))) #[<wx object with oranges>]
第二次:
for i in ok: #[<wx object with oranges>]
i.Destroy() #[<wx object with oranges>]]
ok.append(wx.StaticText(self.frame,-1,'Oranges',pos=(300,300))) #[<dead husk>, <wx object with apples>]
第三次:
for i in ok: #[<dead husk>, <wx object with apples>]
i.Destroy() #[<dead husk>, <wx object with apples>]
当 Python 循环 Ok
并尝试对死去的外壳应用 Destroy
时,它会中断,因为该对象已被杀死。 杀死该对象不会将其从列表中删除。
在附加新对象之前,我通过重置 ok
使您的代码正常工作。 但是,我必须将 ok
设置为类属性。下面的工作代码带有诊断打印语句:
import wx
class oranges(wx.Frame):
ok=[]
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'Testing Sample',size=(1024,768))
self.frame=wx.Panel(self)
some_text=wx.StaticText(self.frame,-1,'TEXT',pos=(500,500))
more_choices=['Home','Page One']
self.adding=wx.ComboBox(self.frame,choices=more_choices,pos=(300,722),style=wx.CB_READONLY)
self.Bind(wx.EVT_COMBOBOX,self.addition,self.adding)
def addition(self,event):
if self.adding.GetValue()=='Home':
print "1 ", self.ok
for i in self.ok:
i.Destroy()
self.ok = []
self.ok.append(wx.StaticText(self.frame,-1,'Oranges',pos=(300,300)))
print "2 ", self.ok
elif self.adding.GetValue()=='Page One':
print "3 ", self.ok
for i in self.ok:
i.Destroy()
self.ok = []
self.ok.append(wx.StaticText(self.frame,-1,'Apples',pos=(300,300)))
print "4 ", self.ok
else: pass
if __name__ =='__main__':
app = wx.PySimpleApp()
window = oranges(parent=None,id=-1)
window.Show()
app.MainLoop()
关于python - 在wxPython中切换帧时wx._core.PyDeadObjectError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25126923/
在 wx.ComboBox 中的页面之间切换时遇到问题。错误似乎是何时更改页面两次以上。这对我来说是一个巨大的错误,我似乎无法找到解决方案。代码: import wx ok=[] class oran
我需要在 /_core/js 下的 product.js 中自定义函数的行为。函数声明为: function replaceAddToCartSections(data) {} 我尝试在 custom
我们在使用 wxPython 加载文件时遇到了问题,用例是我们将这些文件/片段放在计算机上的文件夹中。片段是原始 html 文件的一小部分 - 很多时候片段是提取的表格,表格周围包含 html 和 b
我试图在循环中获得两层之间的重叠特征。这在大多数情况下工作正常,但在某些情况下会引发异常。异常回溯甚至没有给出任何关于异常的提示。 代码: feature1_l
我正在尝试配置和运行 SVN 提交后 Hook 发送邮件。我已经下载了 mailer.py 类,为 svn 安装了 Python 2.7 和 svn-win32 绑定(bind)。机器是 Window
我在没有 jack 的 Ubuntu 14.04 上安装 pyo 并运行 Python 2.7。我遵循 Debian-based installing instructions写在 pyo wiki
我是一名优秀的程序员,十分优秀!