Reputation: 171
in wxpython, is there a event that can occur when one of the function of the panel or frame is called? thanks; for example, self.Bind(wx.EVT_Onfunctioncalled, self.OnDoSomething)
Well, I have to changed this question to a more specific one as follows:
I mean, well, the following process: I click on the menu "file" on the main window (as most GUI application looks), then "open", then a file directory dialog pops up, then I select a file, then I click "okay" on that dialog, then, I want that this file's name would appear on the listctrl on this main window, displaying which file I had select
Upvotes: 0
Views: 245
Reputation: 18967
Here's a runnable example that does what you want.
import wx
class ListTest(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, size=(380, 230))
panel = wx.Panel(self, -1)
#Create a list
self.list = wx.ListCtrl(panel, -1, style=wx.LC_REPORT)
self.list.InsertColumn(0, 'File-path', width=140)
#Do the layout
hbox = wx.BoxSizer(wx.HORIZONTAL)
hbox.Add(self.list, 1, wx.EXPAND)
panel.SetSizer(hbox)
self.Centre()
self.Show(True)
#Create Menu
menubar = wx.MenuBar()
file = wx.Menu()
self.loadFile = wx.MenuItem(file, -1, '&Open\tCtrl+L', 'Open a file')
file.AppendItem(self.loadFile)
menubar.Append(file, '&File')
self.SetMenuBar(menubar)
self.Bind(wx.EVT_MENU, self.on_openFile)
def on_openFile(self, evt):
loadFileDlg = wx.FileDialog(
self, message="Open File",
defaultDir="",
defaultFile="",
style=wx.OPEN | wx.CHANGE_DIR
)
#If the user clicked the open file button
if loadFileDlg.ShowModal() == wx.ID_OK:
#Get the file path
path = loadFileDlg.GetPath()
loadFileDlg.Destroy()
#Call your file analysis method or whatever here
#Create a message dialog
fileAnalysedDlg = wx.MessageDialog(self, "File Has Been Analysed", "File Has Been Analysed", wx.OK)
fileAnalysedDlg.ShowModal()
fileAnalysedDlg.Destroy()
#Add filepath to list
self.list.InsertStringItem(0, path)
app = wx.App()
ListTest(None, 'list test')
app.MainLoop()
Upvotes: 2