2013-02-23 73 views
0

嗨,大家试了一切,现在我问你的建议。无法隐藏wxpython的消息框

我无法隐藏我的留言箱。

代码:

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分钟即可完成.till那个时候消息框会在屏幕上,我希望把它隐藏,直到安装过程完成得。 我试过隐藏,未来调用,关闭,禁用..但每次我得到'int对象没有属性“。

回答

0

消息框必须隐藏和时间wxMessageBox()回报破坏,必须有别的东西怎么回事。

一般来说,如果您想要确保所有待处理事件都已处理完毕(并且所有窗口应该重新绘制/调整大小/关闭都确实处理完毕),请使用wx.CallAfter()轻轻启动您的长时间运行过程晚点。

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

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' 
+0

感谢您的回答。 – 2013-02-23 09:01:27

+0

但现在我有麻烦显示被摧毁的面板时,我按“否” – 2013-02-23 09:02:46

+0

该答案中的代码与内部的wxMessageBox()函数完全相同,因此不能更改任何内容。 – 2013-02-23 12:56:40