1.11M Members

How to 'refresh' in wxPython?

 
1
 

Hey All,

I have 'Py-mailer' here.... here's how it is so far:

import smtplib
import wx

window=wx.App()

class pymailer(wx.Frame):
    
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"Py-mailer",size=(900,700))

        self.panel=wx.Panel(self,-1)

        menubar=wx.MenuBar()

        filem=wx.Menu()
        filem.Append(201,"Quit")
        self.Bind(wx.EVT_MENU,self.Quit,id=201)

        viewm=wx.Menu()
        viewm.Append(202,"About")
        self.Bind(wx.EVT_MENU,self.About,id=202)

        menubar.Append(filem,"File")
        menubar.Append(viewm,"Help")

        self.SetMenuBar(menubar)

        wx.StaticText(self.panel, -1, "Login ID:", pos=(10,10))
        wx.StaticText(self.panel, -1, "Password:", pos=(10,40))

        self.username=wx.TextCtrl(self.panel,101,"Login ID",pos=(100,10))        
        self.password=wx.TextCtrl(self.panel,102,"Password",style=(wx.TE_PASSWORD),pos=(100,40))

        wx.StaticText(self.panel, -1, "@gmail.com", pos=(220,10))

        login=wx.Button(self.panel,103,label="Login",pos=(115,70))
        self.Bind(wx.EVT_BUTTON,self.Login,id=103)
        
        wx.StaticText(self.panel,-1,"To:",pos=(10,120))
        wx.StaticText(self.panel,-1,"Subject:",pos=(10,150))
        wx.StaticText(self.panel,-1,"Message:", pos=(10,180))

        self.to_info=wx.TextCtrl(self.panel,104,pos=(80,120),size=(300,20))        
        self.sub_info=wx.TextCtrl(self.panel,105,pos=(80,150),size=(300,20))        
        self.msg_info=wx.TextCtrl(self.panel,106,pos=(80,180),size=(800,400))
        
        send=wx.Button(self.panel,107,"Send",pos=(400,600))
        self.Bind(wx.EVT_BUTTON,self.Send,id=107)

        self.Centre()
        self.Show()

    def Quit(self,event):
        self.Close()
    
    def About(self,event):
        about=wx.AboutDialogInfo()
        
        about.SetName("Py-Mailer")
        about.SetCopyright("(c) 2009 Sravan and Daniel")
        about.SetWebSite("http://www.team-vaska.co.cc")
        about.AddDeveloper("Sravan")
        about.AddDeveloper("Daniel Pacheco")

        wx.AboutBox(about)

    def Login(self,event):

        self.user=self.username.GetValue()
        self.passw=self.password.GetValue()
        self.loginmsg=wx.StaticText(self.panel,-1,"...",pos=(10,200))

        if(self.user=="" and self.passw==""):
            wx.MessageBox("Error 002: You did not enter your username and/or password","Enter Login Details")

        try:
            self.s.login(self.user,self.passw)
            self.loginmsg.SetLabel("Logged in...")
        except:
            self.loginmsg.SetLabel("Failed to login, please try again...")
        

    def Send(self,event):
        self.to=self.to_info.GetValue()
        self.subject=self.sub_info.GetValue()
        self.message=self.msg_info.GetValue()
        self.msg="To: "+self.to+"\nSubject: "+self.subject+"\n"+self.message
        self.s.sendmail(self.user,self.to,self.msg)
        self.s.quit()        

        wx.StaticText(self.panel,-1,"Your message has been sent!",pos=(175,500))        

pymailer()
window.MainLoop()

Now what I want to do is: when the user clicks the "Send" button, the panel should refresh, and only a StaticText should be displayed in the centre saying "Sending...". After that I should say (after the message is sent) "You message has been successfully sent to _____".

How do I make the panel destroy all it's contents?

Thanks,
Sravan

 
0
 

You can individually set a sizer/widget to show/hide. You do this by going:

sizer.Show(False)
#or otherwise
ExampleTextCtrl.Show(False)

Then you can set them to show again by doing the same command with True as the argument.

Hope that helps :)

 
-1
 

You could also specify which widgets in the sizer should be visible or not

sizer.Show(text_ctrl_1, False)
Isn't it about time forums rewarded their contributors?

Earn rewards points for helping others. Gain kudos. Cash out. Get better answers yourself.

It's as simple as contributing editorial or replying to discussions labeled or OP Kudos

You
This article has been dead for over six months: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: