
まくまく
人気の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()