【发布时间】:2013-12-19 06:37:25
【问题描述】:
我面临一些从 wxpython 主框架获取返回值的问题。
我的脚本:
import wx
import wx.xrc
class Email_template( wx.Frame ):
def __init__( self, parent, to, cc, subject, message_boby ):
app = wx.App(False)
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 650,500 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_INFOBK ) )
main_sizer = wx.FlexGridSizer( 0, 1, 0, 0 )
main_sizer.SetFlexibleDirection( wx.BOTH )
main_sizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
header_sizer = wx.FlexGridSizer( 0, 2, 0, 0 )
header_sizer.SetFlexibleDirection( wx.BOTH )
header_sizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
header_sizer_right = wx.FlexGridSizer( 0, 1, 0, 0 )
header_sizer_right.SetFlexibleDirection( wx.BOTH )
header_sizer_right.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
self.mail_send_button = wx.Button( self, wx.ID_ANY, u"Send", wx.DefaultPosition, wx.Size( -1,50 ), 0 )
header_sizer_right.Add( self.mail_send_button, 0, wx.ALL, 5 )
self.mail_edit_button = wx.Button( self, wx.ID_ANY, u"Edit", wx.DefaultPosition, wx.Size( -1,50 ), 0 )
header_sizer_right.Add( self.mail_edit_button, 0, wx.ALL, 5 )
header_sizer.Add( header_sizer_right, 1, wx.EXPAND, 5 )
header_sizer_left = wx.FlexGridSizer( 0, 2, 0, 0 )
header_sizer_left.SetFlexibleDirection( wx.BOTH )
header_sizer_left.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
self.from_staticText = wx.StaticText( self, wx.ID_ANY, u"From:", wx.DefaultPosition, wx.DefaultSize, 0 )
self.from_staticText.Wrap( -1 )
header_sizer_left.Add( self.from_staticText, 0, wx.ALL, 5 )
self.from_textCtrl = wx.TextCtrl( self, wx.ID_ANY, "from_mail@mymail.com", wx.DefaultPosition, wx.Size( 400,-1 ), 0 )
header_sizer_left.Add( self.from_textCtrl, 0, wx.ALL, 5 )
self.to_staticText = wx.StaticText( self, wx.ID_ANY, u"To:", wx.DefaultPosition, wx.DefaultSize, 0 )
self.to_staticText.Wrap( -1 )
header_sizer_left.Add( self.to_staticText, 0, wx.ALL, 5 )
self.to_textCtrl = wx.TextCtrl( self, wx.ID_ANY, to, wx.DefaultPosition, wx.Size( 400,-1 ), 0 )
header_sizer_left.Add( self.to_textCtrl, 0, wx.ALL, 5 )
self.cc_staticText = wx.StaticText( self, wx.ID_ANY, u"CC:", wx.DefaultPosition, wx.DefaultSize, 0 )
self.cc_staticText.Wrap( -1 )
header_sizer_left.Add( self.cc_staticText, 0, wx.ALL, 5 )
self.cc_textCtrl = wx.TextCtrl( self, wx.ID_ANY, cc, wx.DefaultPosition, wx.Size( 400,-1 ), 0 )
header_sizer_left.Add( self.cc_textCtrl, 0, wx.ALL, 5 )
self.subject_staticText = wx.StaticText( self, wx.ID_ANY, u"Subject:", wx.DefaultPosition, wx.DefaultSize, 0 )
self.subject_staticText.Wrap( -1 )
header_sizer_left.Add( self.subject_staticText, 0, wx.ALL, 5 )
self.subject_textCtrl = wx.TextCtrl( self, wx.ID_ANY, subject, wx.DefaultPosition, wx.Size( 400,-1 ), 0 )
header_sizer_left.Add( self.subject_textCtrl, 0, wx.ALL, 5 )
header_sizer.Add( header_sizer_left, 1, wx.EXPAND, 5 )
main_sizer.Add( header_sizer, 1, wx.EXPAND, 5 )
mail_sizer = wx.FlexGridSizer( 0, 1, 0, 0 )
mail_sizer.SetFlexibleDirection( wx.BOTH )
mail_sizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
self.mail_textCtrl = wx.TextCtrl( self, wx.ID_ANY, message_boby, style=wx.TE_MULTILINE, size=( 600,330 ))
mail_sizer.Add( self.mail_textCtrl, 0, wx.ALL, 5 )
main_sizer.Add( mail_sizer, 1, wx.EXPAND, 5 )
self.to_textCtrl.Enable(False)
self.cc_textCtrl.Enable(False)
self.subject_textCtrl.Enable(False)
self.mail_textCtrl.Enable(False)
self.message_boby = message_boby
self.SetSizer( main_sizer )
self.Layout()
wx.EVT_BUTTON(self, self.mail_send_button.GetId(), self.OnClick_send)
wx.EVT_BUTTON(self, self.mail_edit_button.GetId(), self.OnClick_edit)
self.Centre( wx.BOTH )
self.Show(True)
app.MainLoop()
def OnClick_send(self, event):
self.to = self.to_textCtrl.GetValue()
self.cc = self.cc_textCtrl.GetValue()
self.subject = self.subject_textCtrl.GetValue()
self.message_boby = self.mail_textCtrl.GetValue()
r_value = self.message_boby
self.Destroy()
return r_value
def OnClick_edit(self, event):
self.to_textCtrl.Enable(True)
self.cc_textCtrl.Enable(True)
self.subject_textCtrl.Enable(True)
self.mail_textCtrl.Enable(True)
return_values = Email_template(None, "tomail@mymail.com", "cc_copy@mymail.com", "message subject", "mail")
print return_values
它显示以下错误消息:
wxPython wrapper for DELETED Email_template object! (The C++ object no longer exists.)
但我需要从 gui 打印 message_body 更新的内容。
谢谢。
【问题讨论】:
-
请帮我解决这个问题。谢谢