wxPython - messagedialog的问题

时间:2014-04-19 20:38:17

标签: python wxpython

我是一个新手,我正在努力学习wxpython。我在youtube上的视频教程中得到了这段代码。它应该显示一个带有“确定”的对话框。按钮。它适用于视频中的演示,但是当我这样做时,对话框不会出现。 我添加了print语句来调试代码。该程序似乎正在完成所有步骤,但对话框似乎没有出现。

我也在终端控制台中收到此消息:Python [3700:d07]无法打开输入服务器/ Library / InputManagers / Inquisitor

提前感谢,

这里是代码:

import wx

class bucky(wx.Frame):

    def __init__(self, parent, id):
        print 'initialising frame'
        wx.Frame.__init__(self,parent, id, 'frame aka window', size=(300,200))
        panel = wx.Panel(self)


        print 'about to create box'

        box = wx.MessageDialog(None,'go on', 'title', wx.OK)
        answer=box.ShowModal()
        box.Destroy()


if __name__=='__main__':
    print 'program begins'
    app=wx.App()
    print 'app created'
    frame = bucky(parent=None, id=-1)
    print 'frame instantiated'
    frame.Show()
    app.MainLoop()

2 个答案:

答案 0 :(得分:1)

同样的问题,仍然无法弄清楚为何在启动时取消对话框,但我们可以启动它两次来解决这个问题。

    box = wx.MessageDialog(None,'go on', 'title', wx.OK)
    box.ShowModal()
    box.ShowModal()
    box.Destroy()

答案 1 :(得分:0)

试试这段代码。它在带有wxPython v3.0的Windows 8上运行良好

import wx

class bucky(wx.Frame):
    def __init__(self, parent, id):
        print 'initialising frame'
        wx.Frame.__init__(self,parent, id, 'frame aka window', size=(300,200))
        panel = wx.Panel(self)
        print 'about to create box'
        box = wx.MessageDialog(None,'go on', 'title', wx.OK)
        box.ShowModal()
        box.Destroy()

if __name__=='__main__': 
    print 'program begins' 
    app=wx.App() 
    print 'app created' 
    frame = bucky(parent=None, id=-1) 
    print 'frame instantiated' 
    frame.Show()
    app.MainLoop()