据我所知,我的问题源于wxApp的使用。
在一个小的子例程中,我调用一个wx.MessageDialog来请求是或否。我拿回答案--一个过程--一些东西--非常精确。下面的示例代码实际上可以工作(尽管它可能很难看),除了对话框在按下其中一个按钮后保持打开.
import wx
from os import path
def HasFile(filename):
if path.isfile(filename ):
app = wx.App()
dial = wx.MessageDialog(None,
'Die Datei "'+filename+'" wurde gefunden.\nSoll sie eingelesen werden?',
'Bitte antworten',
wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION)
result = dial.ShowModal()
dial.EndModal(retCode=0)
dial.Destroy()
app.MainLoop()
return result == wx.ID_YES
else:
return False因此,当程序的其余部分做任何预期的事情时,盒子就放在那里。我后来对matplotlib的调用似乎也会产生错误(准确地说,是Tkinter错误),可能是因为wx?
编辑:我试图用调用app.Destroy()来结束这个应用程序。这并不能改变盒子还在的事实。当我随后发出一个app.IsActive()时,整个程序就会退出(就像sys.exit()一样)!怎么会这样?
编辑2:添加这样的wxApp不是个好主意,因为其他脚本也会受到影响。随后的绘图命令不会显示,我也不知道如何解决这个问题。因此,我决定一起删除DialogBox。
发布于 2010-05-20 20:58:53
在删除EndModal之后调用函数,它可以正常工作,并在选择yes/no后将我返回到控制台。选择其中一个基本调用EndModal,然后手动调用它将引发异常
Traceback (most recent call last):
File "blah.py", line 19, in <module>
HasFile("C:\tbzrcommand_args.txt")
File "blah.py", line 12, in HasFile
dial.EndModal(retCode=0)
File "C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\_windows.py", line 715, in EndModal
return _windows_.Dialog_EndModal(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "IsModal()" failed at ..\..\src\msw\dialog.cpp(361) in wxDialog::EndModal(): EndModal() called for non modal dialog修正:
import wx
from os import path
def HasFile(filename):
if path.isfile(filename ):
print 'gfd'
app = wx.App(redirect=False)
dial = wx.MessageDialog(None,
'Die Datei "'+filename+'" wurde gefunden.\nSoll sie eingelesen werden?',
'Bitte antworten',
wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION)
result = dial.ShowModal()
dial.Destroy()
app.MainLoop()
return result == wx.ID_YES
else:
return Falsehttps://stackoverflow.com/questions/2859163
复制相似问题