无法在wxpython中隐藏消息框

时间:2013-02-23 05:22:20

标签: python wxpython subprocess wxwidgets

嗨,大家尝试了一切,现在我问你的建议。

我无法隐藏我的留言箱。

代码是:

    ans = wx.MessageBox("length = %s , height = %s " % (str(len), str(ht)))

    if ans = wx.Yes:

        subprocess.call("pword | sudo -S ./Install.sh %s %s" % (str(len),str(ht)))    

第3行需要大约6-7分钟才能完成。那时候消息框会出现在屏幕上,我想让它隐藏起来,直到安装过程完成。 我试着隐藏,将来调用,关闭,禁用..但每次我得到'int对象没有属性“”。

2 个答案:

答案 0 :(得分:0)

如果您需要更多控制消息框,请使用消息对话框。消息框直接返回答案,因此您无法控制窗口。通过创建消息对话框,您可以控制窗口。

这是一个简单的例子:

import wx

app = wx.App(False)
box = wx.MessageDialog(None, 'Yes or No?', caption='Dialog Title', style=wx.YES_NO | wx.YES_DEFAULT)
result = box.ShowModal()
box.Destroy()
if result == wx.ID_YES:
    print 'yes'
else:
    print 'no'

答案 1 :(得分:0)

消息框必须在wxMessageBox()返回时隐藏和销毁,此处必须有其他内容。

通常,如果您想确保已处理所有待处理事件(因此确实需要重新绘制/调整大小/关闭所有窗口),请使用wx.CallAfter()启动长时间运行的进程在稍后的时间。

当然,从GUI程序运行几分钟的阻塞操作无论如何都是个坏主意,但这是另一个故事......