嘿伙计们我一直试图调试这个问题一段时间无济于事。
我已经定义了一个绑定到调用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。这似乎是传递焦点的问题,但是它们都没有提供修复或变通方法。
答案 0 :(得分:0)
尝试在“测试”对话框中使用“if”而不是“while”。我怀疑你按下OK按钮时会有无限或接近无限循环的事情。如果用户在dlgAdd对话框上按CANCEL,则程序永远不会销毁dlgAdd,因为它会在该点处中断循环。这也是一个问题,可能是“测试”对话框挂了一段时间的原因。
答案 1 :(得分:0)
嗯好吧,这个错误源于使用Parallels时使用Coherence模式的错误。关闭它后,对话框完美无缺。