在wxpython中,当调用面板或框架的某个功能时是否会发生事件?谢谢;例如,self.Bind(wx.EVT_Onfunctioncalled, self.OnDoSomething)
好吧,我必须将此问题更改为更具体的问题如下:
我的意思是,以下过程:我点击主窗口上的“文件”菜单(大多数GUI应用程序看起来),然后“打开”,然后弹出一个文件目录对话框,然后我选择一个文件,然后我在该对话框上单击“okay”,然后,我希望此文件的名称出现在此主窗口的listctrl上,显示我选择的文件
答案 0 :(得分:2)
这是一个可运行的例子,可以满足您的需求。
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()