как реализовать этот процесс в wxpython? - PullRequest
0 голосов
/ 27 августа 2010

в wxpython, может ли произойти событие, когда вызывается одна из функций панели или фрейма?Спасибо;например, self.Bind(wx.EVT_Onfunctioncalled, self.OnDoSomething)

Ну, я должен изменить этот вопрос на более конкретный вопрос следующим образом:

Я имею в виду, ну, в общем, следующий процесс: я нажимаю на меню "файл""в главном окне (как выглядит большинство приложений с графическим интерфейсом), затем" открыть ", затем появляется диалоговое окно с каталогом файлов, затем я выбираю файл, затем я нажимаю" окей "в этом диалоговом окне, затем я хочу, чтобы имя этого файлабудет отображаться в listctrl в этом главном окне, показывая, какой файл я выбрал

1 Ответ

2 голосов
/ 27 августа 2010

Вот исполняемый пример, который делает то, что вы хотите.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...