“等待对话”wx.message对话框"

2024-05-28 23:54:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我用。。。在

waitingdlg = wx.MessageDialog(self, 'Waiting for soundcard signal...', 'Test', wx.CANCEL)
waitingdlg.ShowModal()

while inputvolume < 10:       # inputvolume is a global variable
                              # modified by another thread linked to soundcard input
    wx.MilliSleep(10)

waitingdlg.Destroy()

。。。为某一外部输入信号的分贝级(例如一个较高的声卡输入)。在

我希望wx.MessageDialog在触发器发生时自动关闭(当inputvolume变成{})时。在

但是因为waitingdlg.ShowModal(),所以{}永远不会发生! 另一方面,如果没有ShowModal,则不会显示该对话框。在

怎么做这个wx.message对话框等待外部触发器自行关闭?


Tags: testselfforsignalcancel对话框wxwaiting
1条回答
网友
1楼 · 发布于 2024-05-28 23:54:50

您可以创建另一个线程来检查卷。 请使用wx.对话框而是从那时起wx.message对话框不是真的wx.对话框它不响应Destroy()。在

    import wx
    import threading

    def timer_start(dlg):
        t = threading.Timer(0,test_func,(dlg,))
        t.start()

    def test_func(dlg):

        global inputvolume
        print "inputvolume: ", inputvolume

        if inputvolume < 100:
            wx.MilliSleep(10)
            timer_start(dlg)
            inputvolume += 1
        else:
            #dlg.EndModal(wx.CANCEL)
            dlg.Destroy()


    if __name__ == "__main__":
        inputvolume = 0
        app = wx.App(False)
        fame = wx.Frame(None)
        fame.Show()

        waitingdlg = wx.Dialog(fame,title = 'Test')
        timer_start(waitingdlg)
        waitingdlg.ShowModal()

        app.MainLoop()

相关问题 更多 >

    热门问题