wxPython - 信息对话框的问题

1 投票
2 回答
1158 浏览
提问于 2025-04-18 03:25

我刚开始学习wxpython,看到一个YouTube的视频教程上有段代码。这个代码应该能显示一个对话框,上面有一个“确定”按钮。在视频的演示中它是能正常工作的,但我这边就是不显示对话框。

为了调试代码,我加了一些打印语句。程序似乎走完了所有步骤,但对话框就是不出现。

我在终端控制台还看到这个信息: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 个回答

1

试试这段代码。在Windows 8上用wxPython v3.0运行得很好。

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

我也遇到了同样的问题,还是搞不清楚为什么对话框在启动时会被取消,不过我们可以通过启动它 两次 来解决这个问题。

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

撰写回答