在wxPython中向wxMessageDialog box/AboutDialogInfo添加文本控件窗口

在wxPython中向wxMessageDialog box/AboutDialogInfo添加文本控件窗口,python,python-2.7,user-interface,wxpython,wxwidgets,Python,Python 2.7,User Interface,Wxpython,Wxwidgets,我正在Windows7操作系统上使用PythonV2.7和WxpythonV3.0 在我的应用程序中,我有一个关于菜单。单击“关于”菜单后,我想显示有关我的应用程序的一些信息。我正试图创建一个对话框/AboutBox,如下图所示。(这是的about对话框。单击记事本++菜单栏中的?) 记事本++对话框的特殊之处在于,我还需要一个文本控件窗口。你可以复制信息 我在wxPython也尝试过,但不幸的是我失败了。我尝试了两种不同的点击和试用方法 1。我试图将文本控件窗口添加到对话框wxMessage

我正在Windows7操作系统上使用PythonV2.7和WxpythonV3.0

在我的应用程序中,我有一个关于菜单。单击“关于”菜单后,我想显示有关我的应用程序的一些信息。我正试图创建一个对话框/AboutBox,如下图所示。(这是的about对话框。单击记事本++菜单栏中的

记事本++对话框的特殊之处在于,我还需要一个文本控件窗口。你可以复制信息

我在wxPython也尝试过,但不幸的是我失败了。我尝试了两种不同的点击和试用方法

1。我试图将文本控件窗口添加到对话框wxMessageDialog,但它根本没有显示

2。我尝试在wxPython中使用,并尝试向其中添加文本控件,但失败,因为AboutDialogInfo不是窗口,并且文本控件的父控件应为窗口类型

Error:
    aboutPanel = wx.TextCtrl(info, -1, style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
  File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\_controls.py", line 2019, in __init__
    _controls_.TextCtrl_swiginit(self,_controls_.new_TextCtrl(*args, **kwargs))
TypeError: in method 'new_TextCtrl', expected argument 1 of type 'wxWindow *'
如果有人能提供一些关于如何将文本控件窗口添加到对话框/AboutBox的想法,那就太好了

代码:以下是我的代码示例:

import wx
from wx.lib.wordwrap import wordwrap

class gui(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self,None, id, title, style=wx.DEFAULT_FRAME_STYLE)
        panel1 = wx.Panel(self, -1)
        panel1.SetBackgroundColour('#fffaaa')
        menuBar = wx.MenuBar()
        file = wx.Menu()
        file.Append(101, '&About1', 'About1')
        file.Append(102, '&About2', 'About2')
        menuBar.Append(file, '&File')
        self.SetMenuBar(menuBar)
        wx.EVT_MENU(self, 101, self.onAbout)# Event for the About1 menu
        wx.EVT_MENU(self, 102, self.onAboutDlg)# Event for the About2 menu

    def onAbout(self, event):
        message = 'This fantastic app was developed using wxPython.\nwxPython is c00l :)'
        dlg = wx.MessageDialog(self, message, 'My APP', wx.OK|wx.ICON_INFORMATION)
        aboutPanel = wx.TextCtrl(dlg, -1, style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
        aboutPanel.WriteText('Experimentation is the part of our life.\n')
        dlg.ShowModal()
        dlg.Destroy()

    def onAboutDlg(self, event):
        self.panel = wx.Panel(self, -1)
        info = wx.AboutDialogInfo()
        info.Name = "My About Box"
        info.Version = "0.1"
        info.Copyright = "(C) 2014 xxx"
        info.Description = wordwrap(
        "This is an example application that shows the problem "
        "that I am facing :)",
        350, wx.ClientDC(self.panel))
        info.WebSite = ("http://stackoverflow.com/users/2382792/pss", "My Home Page")
        info.Developers = ["PSS"]
        info.License = wordwrap("Driving license and a AK-47 too :P ", 500,wx.ClientDC(self.panel))
        #    Uncomment the following line to get the error! 
        #aboutPanel = wx.TextCtrl(info, -1, style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
        #aboutPanel.WriteText('Experimentation is the part of our life.\n')
        wx.AboutBox(info)


if __name__ == '__main__':
    app = wx.App()
    frame = gui(parent=None, id=-1, title="My-App")
    frame.Show()
    app.MainLoop()
谢谢你抽出时间

wxAboutBox()
为当前平台使用标准的“关于”对话框,因此它不会帮助您实现目标。类似地,
wxMessageDialog
是本机消息框对话框,它同样不能有自定义文本框。当然,使用
wxDialog
构建任何您想要的对话框并向其中添加元素(以及使用大小调整器来布局它们)绝对没有问题


你的错误是认为你需要使用的类是
wxMessageDialog
:不是,你需要
wxDialog

我现在注意到的另一件事。在上图中,您可能会注意到文本控件的标题为“GNU通用公共许可证”。怎么做?我读了TextCtrl的文档,没有任何线索。我在本教程中发现PageSetupDialog具有此功能。请检查此链接页面设置对话框有完全不同的用途:(这不是
wxtxtctrl
的一部分,而是包含它的一个单独的
wxStaticBox