求教:wxPython问题

求教:wxPython问题

代码:

import wx
ID_ABOUT = 101
ID_EXIT = 102
class Frame(wx.Frame):
        def __init__(self, parent, ID, title):
                wx.Frame.__init__(self, parent, ID, title,
                                   wx.DefaultPosition, wx.Size(200, 150))
                self.CreateStatusBar()
                self.SetStatusText('This is the statusbar')
                menu = wx.Menu()
                menu.Append(ID_ABOUT, '&About', 'More information about this program')
                menu.AppendSeparator()
                menu.Append(ID_EXIT, '&Exit', 'Terminate the program')
                menuBar = wx.MenuBar()
                menuBar.Append(menu, '&File')
                self.SetMenuBar(menuBar)

class App(wx.App):
        def OnInit(self):
                frame = Frame(None, -1, 'Fuck_your_asshole_and_pussy!')
                frame.Show()
                self.SetTopWindow(frame)
                return True

app = App()
app.MainLoop()

可以运行,但点击‘About’的时候如下报错:

Traceback (most recent call last):
  File "D:\Python25\w1.py", line 24, in OnAbout
    'About Me', wx.OK | wx.ICON_INFORMATION)
  File "D:\Python25\lib\site-packages\wx-2.8-msw-ansi\wx\_windows.py", line 2898, in __init__
    _windows_.MessageDialog_swiginit(self,_windows_.new_MessageDialog(*args, **kwargs))
TypeError: String or Unicode type required

请教高手,这里要怎么修改谢谢~
1. 我使用unicode版本,你的是ansi版本,建议换一下
2. 我运行,没有任何错误。
你代码有贴对吗?
'About Me', wx.OK | wx.ICON_INFORMATION
这个应该是定义你点了 About Me 出来的窗口的语句中的一部分,可是你贴的代码里根本就没有这个。

你在把你贴的代码运行试试看
我去搜一下unicode版本,谢谢指点~
再问一下,ansi和unicode版本有什么区别,或者说哪个更好点,为什么?
还有uft-8是什么情况下使用的?和操作系统有关系吗?要用uft-8怎么设置?谢谢
wxPython分为ansi版和unicode版。unicode版需要处理时全部使用unicode,这样不会出现中文半个汉字的问题。一个汉字按一个字符算。而ascii版,一个汉字按两个字符算,因此会出现半个汉字的问题。只不过使用unicode版在处理中文时可能需要转化,如保存文件,打开文件时,关于unicode的东西建议去网上搜一下吧。utf-8是unicode转为普通的字节文本时可以使用的编码。需要时使用,要看具体的应用场合。
哦谢谢,搜下先,实践过不明白再求教~
import wx
ID_ABOUT = 101
ID_EXIT = 102
class Frame(wx.Frame):
        def __init__(self, parent, ID, title):
                wx.Frame.__init__(self, parent, ID, title,
                                   wx.DefaultPosition, wx.Size(200, 150))
                self.CreateStatusBar()
                self.SetStatusText('This is the statusbar')
                menu = wx.Menu()
                menu.Append(ID_ABOUT, '&About', 'More information about this program')
                menu.AppendSeparator()
                menu.Append(ID_EXIT, '&Exit', 'Terminate the program')
                menuBar = wx.MenuBar()
                menuBar.Append(menu, '&File')
                self.SetMenuBar(menuBar)
                wx.EVT_MENU(self, ID_ABOUT, self.OnAbout)
                wx.EVT_MENU(self, ID_EXIT, self.TimeToQuit)

        def OnAbout(self, event):
                wx.MessageDialog(self, 'This sample program shows off\n'
                                'frames, menus, statusbars, and this\n'
                                'message dialog.'
                                'About Me', wx.OK | wx.ICON_INFORMATION)

        def TimeToQuit(self, event):
                self.Close()

class App(wx.App):
        def OnInit(self):
                frame = Frame(None, -1, 'Fuck_your_asshole_and_pussy!')
                frame.Show()
                self.SetTopWindow(frame)
                return True

app = App()
app.MainLoop()

不好意思,是复制错了,是这个代码,呵呵,请问下出错的地方该怎么改~谢谢


[Copy to clipboard] [ - ]
CODE:
                wx.MessageDialog(self, 'This sample program shows off\n'
                                'frames, menus, statusbars, and this\n'
                                'message dialog.'
                                'About Me', wx.OK | wx.ICON_INFORMATION)

好象你的'message dialog.'后面少了一个',',而且你只创建了MessageDialog对象,但是没有显示它,当然不行。
改过代码为:

[Copy to clipboard] [ - ]
CODE:
        def OnAbout(self, event):
                wx.MessageDialog(self, 'This sample program shows off\n'
                                'frames, menus, statusbars, and this\n'
                                'message dialog.',
                                'About Me', wx.OK | wx.ICON_INFORMATION).ShowModal()

谢谢大虾指点~