2

嘿伙计们,我一直在尝试调试此问题一段时间,但无济于事。

我已经定义了一个绑定到调用 FileDialog 的按钮的函数,如果用户单击 OK,该函数将恢复。在 ID_OK 之后,我立即尝试调用一个简单的对话框,提示用户从另一个目录中选择文件。出现此消息对话框后,似乎存在延迟,用户在第一次单击时无法按 OK 或 CANCEL。需要反复单击按钮才能响应。如果有人知道这里发生了什么或者可以做些什么来调试这个问题,我将非常感激:)。我附上了代码片段(尽管使用 SingleChoiceDialog,但行为与 MessageDialog 相同)。为了记录 dlg 在条件语句之后被销毁。

def openFile(self, event):
    import os
    import re
    import csv
    import sets
    import datetime

    dlg = wx.FileDialog(self, "Choose file(s)", os.getcwd(), "", "*.*", wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR)

    if dlg.ShowModal() == wx.ID_OK:
        path = dlg.GetPaths()

        test = wx.SingleChoiceDialog(self, 'Add more files from different directories?', 'Selected Files', path, style=wx.CHOICEDLG_STYLE)

        while test.ShowModal() == wx.ID_OK:
            dlgAdd = wx.FileDialog(self, "Choose file(s)", os.getcwd(), "", "*.*", wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR)
            if dlgAdd.ShowModal() == wx.ID_CANCEL:
                break
            dlgAdd.Destroy()
            path = path + dlgAdd.GetPaths()
            test = wx.SingleChoiceDialog(self, 'Add more files from different directories?', 'Selected Files', path, style=wx.CHOICEDLG_STYLE)

        test.Destroy()

在网上挖掘了更多,发现了类似问题的报告: http: //comments.gmane.org/gmane.comp.python.wxpython/55470。尽管它们都没有提供修复或解决方法,但传递焦点似乎确实是一个问题。

4

2 回答 2

0

尝试在“测试”对话框中使用“if”而不是“while”。我怀疑每当他们按下“确定”按钮时,您都会发生无限或近乎无限的循环。如果用户在 dlgAdd 对话框上按下 CANCEL,您的程序永远不会破坏 dlgAdd,因为它会在此时跳出循环。这也是一个问题,可能是“测试”对话框暂停一段时间的原因。

于 2012-05-02T14:17:10.503 回答
0

好吧,我发现错误源于使用 Parallels 时使用了 Coherence 模式。关闭此功能后,对话框运行良好。

于 2012-05-02T23:47:19.410 回答