0

嗨,伙计们什么都试过了,现在我在问你的建议。

我无法隐藏我的消息框。

代码是:

    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)))    

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

4

2 回答 2

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'
于 2013-02-23T06:29:03.677 回答
0

消息框必须在时间wxMessageBox()返回时隐藏并销毁,这里肯定有其他事情发生。

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

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

于 2013-02-23T12:59:00.333 回答