如何使用对话框启动wxPython程序,然后弹出另一个对话框,然后制作基本画布

如何使用对话框启动wxPython程序,然后弹出另一个对话框,然后制作基本画布,wxpython,wxwidgets,Wxpython,Wxwidgets,可能重复: 嗨,我想制作一个wxPython应用程序,它首先向我显示一个messageDialog,然后显示一个输入对话框(保存播放器名),然后生成一个dc(DrawCanvas) 有人能为我建立这个框架吗? (我一直把面板与框架和对话框混在一起)我已经回答了这个问题,但我的回答是:只需将对话框的创建和实例化放在面板之后。init之前。下面还有一些示例代码: import wx #########################################################

可能重复:

嗨,我想制作一个wxPython应用程序,它首先向我显示一个messageDialog,然后显示一个输入对话框(保存播放器名),然后生成一个dc(DrawCanvas)

有人能为我建立这个框架吗?
(我一直把面板与框架和对话框混在一起)

我已经回答了这个问题,但我的回答是:只需将对话框的创建和实例化放在面板之后。init之前。下面还有一些示例代码:

import wx

########################################################################
class MyDlg(wx.Dialog):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Dialog.__init__(self, None, title="I'm a dialog!")

        lbl = wx.StaticText(self, label="Hi from the panel's init!")
        btn = wx.Button(self, id=wx.ID_OK, label="Close me")

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(lbl, 0, wx.ALL, 5)
        sizer.Add(btn, 0, wx.ALL, 5)
        self.SetSizer(sizer)


########################################################################
class MyPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        # show a custom dialog
        dlg = MyDlg()
        dlg.ShowModal()
        dlg.Destroy()

        self.Bind(wx.EVT_PAINT, self.OnPaint)

    def OnPaint(self, evt):
        pdc = wx.PaintDC(self)
        try:
            dc = wx.GCDC(pdc)
        except:
            dc = pdc
        rect = wx.Rect(0,0, 100, 100)
        for RGB, pos in [((178,  34,  34), ( 50,  90)),
                         (( 35, 142,  35), (110, 150)),
                         ((  0,   0, 139), (170,  90))
                         ]:
            r, g, b = RGB
            penclr   = wx.Colour(r, g, b, wx.ALPHA_OPAQUE)
            brushclr = wx.Colour(r, g, b, 128)   # half transparent
            dc.SetPen(wx.Pen(penclr))
            dc.SetBrush(wx.Brush(brushclr))
            rect.SetPosition(pos)
            dc.DrawRoundedRectangleRect(rect, 8)

########################################################################
class MyFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Example frame")

        # show a MessageDialog
        style = wx.OK|wx.ICON_INFORMATION
        dlg = wx.MessageDialog(parent=None, 
                               message="Hello from the frame's init", 
                               caption="Information", style=style)
        dlg.ShowModal()
        dlg.Destroy()

        # create panel
        panel = MyPanel(self)

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

你昨天似乎也问了同样的问题