Windows中的WxPython 2.9:按钮不会启用()

时间:2013-02-10 04:59:32

标签: wxpython

有谁能告诉我在什么情况下这会失败?

self.next_button.Enable( self.__next_enabled )
assert( self.next_button.Enabled == self.__next_enabled )

我知道这不是类型问题 - print self.next_button会给<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x90ea9c0>。插入self.next_button.Refresh()无济于事。 wx.Yield()也不是。wx.ProgressBar。我还检查了按钮是否被冻结(以防万一),但事实并非如此。

Windows 7上的WxPython版本是2.9.4.0。我在Ubuntu或Mac上似乎没有这个问题。

实际上,它甚至比这更奇怪:当我在另一个函数调用中打开def reset_button_states( self ): self.next_button.Enable( self.__next_enabled ) if self.next_button.Enabled != self.__next_enabled: from threading import Timer Timer( 0.1, self.reset_button_states ).start() 时,该按钮似乎神奇地禁用了它自己。这里的代码试图重新启用按钮作为解决方法。同样,Ubuntu和Mac上的相同代码永远不会禁用该按钮。

更新

我这样解决了这个问题:

wx.Yield

Enable没有时,我不确定为什么会这样,但我会暂时接受它。我仍然想知道为什么{{1}}调用可能会无声地失败以及为什么按钮会在第一时间被强烈禁用。

1 个答案:

答案 0 :(得分:0)

我猜你自己.__ next_enabled变量有时设置为False或0(零)。如果是这样,那么当您使用False调用按钮的启用功能时,它会禁用该按钮。如果你包含一个小的可运行的例子,它会有所帮助。