wxPython ファイルダイアログで選択したファイル名を表示する方法

まくまく
まくまく
人気のGUIライブラリwxPythonでファイルダイアログを作成して任意のファイルを選択します。選んだファイル名をテキストとして同じwxPythonのウインドウに表示します。文字にすると分かりにくくなりますが、単にファイル名を表示するだけです。



出力


プログラムを実行すると、ボタンがひとつだけ表示されたウインドウが立ち上がります。

このボタンを押すとファイルダイアログが立ち上がるので、任意のファイルを選択します。


ファイルを選ぶと、そのファイル名がウインドウに表示されます。

ファイルパスじゃなくて、ファイル名になっているのがミソです。ファイルパスを表示する場合は41行目の「self.text1.SetLabel(filename)」を「self.text1.SetLabel(pathname)」に変更すればOKです。

サンプルプログラム

#ライブラリのインポート
import wx
import os

class MyFrame(wx.Frame):

    def __init__(self, *args, **kw):
        super(MyFrame, self).__init__(*args, **kw)
        self.SetSize(400, 200)
        #self.pnl = wx.Panel(self)

        #テキストを作成
        self.text1 = wx.StaticText(self)
        font = wx.Font(16,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD,faceName="メイリオ")
        self.text1.SetFont(font)

        #ボタンを作成
        self.button1=wx.Button(self, label="ファイルを選択する",size=(250,60))
        self.button1.SetFont(font)
        
        #ボタンを割り当て
        self.Bind(wx.EVT_BUTTON, self.file_open, self.button1)

        #Sizerを作成
        self.sizer = wx.BoxSizer(orient=wx.VERTICAL)
        self.horizontal_sizer = wx.BoxSizer(orient=wx.HORIZONTAL)
        self.horizontal_sizer.Add(self.button1, 1)

        #テキストと画像をSizerに追加
        self.sizer.Add(self.horizontal_sizer, 1)
        self.sizer.Add(self.text1, 1)
        
        #sizerをセット
        self.SetSizer(self.sizer) 

    def file_open(self,event):
        with wx.FileDialog(self, 'Select Image File',style=wx.FD_OPEN) as dialog:
            if dialog.ShowModal() == wx.ID_OK:
                pathname = dialog.GetPath()
                filename = os.path.basename(pathname) 
                self.text1.SetLabel(filename)


if __name__ == '__main__':
    app = wx.App()
    style = wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER)
    frm = MyFrame(None, title='wxPythonのテスト', style=style)
    frm.Show()
    app.MainLoop()
タイトルとURLをコピーしました