如何在wxpython中实现这个过程?

时间:2010-08-26 22:33:25

标签: events wxpython

在wxpython中,当调用面板或框架的某个功能时是否会发生事件?谢谢;例如,self.Bind(wx.EVT_Onfunctioncalled, self.OnDoSomething)

好吧,我必须将此问题更改为更具体的问题如下:

我的意思是,以下过程:我点击主窗口上的“文件”菜单(大多数GUI应用程序看起来),然后“打开”,然后弹出一个文件目录对话框,然后我选择一个文件,然后我在该对话框上单击“okay”,然后,我希望此文件的名称出现在此主窗口的listctrl上,显示我选择的文件

1 个答案:

答案 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()