2015-11-30 2 views
1

В моем графическом интерфейсе wxPython виджет wx.BusyInfo больше не работает. Я работаю над OSX, и недавно обновился до El Capitan.Виджет wxPython BusyInfo больше не работает

Этот простой код ниже не работает ни с одной из версий wx, которые у меня есть («3.0.2.0» или «2.9.2.4»). Насколько я могу судить, wx.BusyInfo просто больше не появляется. К сожалению, я точно не знаю, когда виджет перестает появляться.

class MyFrame(wx.Frame): 

    def __init__(self, parent, title): 
     super(MyFrame, self).__init__(parent, size=(450, 350)) 
     self.panel = wx.Panel(self) 

     btn = wx.Button(self.panel, wx.ID_ANY, "Do thing") 
     self.Bind(wx.EVT_BUTTON, self.do_thing) 
     self.Centre() 
     self.Show() 

    def do_thing(self, event): 
     wait = wx.BusyInfo('Please wait...') 
     time.sleep(5) 
     del wait 

Любые идеи относительно причины или решения этой проблемы?

ответ

2

Похоже, что что-то изменилось в отношении того, когда обрабатываются события рисования для информационного окна занятости. То, что вы видите, просто заключается в том, что событие рисования не доставляется до тех пор, пока не будет выполнен ваш sleep. Если вы дадите ему возможность раскрашиваться, прежде чем блокировать свою занятость (например, вызывать wx.Yield(True)), вы должны увидеть, что он работает как с более ранними версиями OSX. Еще лучше, если вы можете организовать свою занятую задачу, чтобы она периодически предоставлялась, система может делать такие вещи, как обновлять информационную панель занятости и показывать реальный загруженный курсор вместо вращающегося пляжного мяча.

Смежные вопросы