A wx.MessageDialog
在显示时冻结了我的整个 UI,只有鼠标指针移动,我的屏幕上没有任何内容是可点击的。我必须从终端终止该进程。
这发生在所有对话框,如颜色选择器或是/否。但不适用于文件选择器。
线程的详细信息:恰好有一个CallLater
发生在另一个帧中。
这是有问题的部分和有问题的行:
def append_data_point(self, data):
c, l, r = data
if not self._spectrum_data.data_present:
print "hey no data"
dlg = wx.MessageDialog(
parent = self,
message = "data not loaded, create a new data",
caption = "no data loaded" ,
style = wx.OK)
print "created dialog"
dlg.ShowModal()
print "showed modal" #THIS NEVER RUNS
dlg.Destroy()
上面的函数恰好绑定到某个按钮:
self.btn_open_file.Bind(wx.EVT_BUTTON, self.open_file)
选择一个文件(当然是从操作系统界面)有效:
def open_file(self, event):
dlg = wx.FileDialog(
parent = self,
message = "select a spectrum file",
wildcard = "*.spectrum",
style = wx.OPEN)
if dlg.ShowModal() == wx.ID_OK: #PERDECTLY OK
chosen_file = dlg.GetFilename()
chosen_dir = dlg.GetDirectory()
filepath = os.path.join(chosen_dir, chosen_file)