1

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)
4

0 回答 0