wxPythonで ファイルを開くダイアログを利用しファイル内容をテキストボックスへ入れる

2021年6月29日火曜日

Python wxPython ファイル

t f B! P L

今回やること

今回はwxPythonでウィンドウを作成し、ファイルの内容をテキストボックスへ入れる方法を紹介します。
ファイルを開くダイアログを利用し、それをテキストボックスに表示させるということなので、
メモ帳に近い感じがします。今回の記事は前につくった記事と組み合わせて使うと、結構本格的なものになるので、
まだ見ていない人はぜひ見ていってください!!
wxPythonでシンプルなメモ帳を作成する

ソースコード

import wx
import sys
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"ウィンドウタイトル",size=(500,300))
        panel = wx.Panel(self,-1)
        self.textctrl = wx.TextCtrl(panel,-1,style=wx.TE_MULTILINE)
        sizer = wx.BoxSizer()
        sizer.Add(self.textctrl,1,wx.EXPAND)
        panel.SetSizer(sizer)
        
        MBar = wx.MenuBar()
        FileMenu = wx.Menu()
        FileMenu.Append(0,"開く")
        FileMenu.Append(1,"終了")
        MBar.Append(FileMenu,"ファイル")
        
        self.Bind(wx.EVT_MENU,self.SelectMenu)
        self.SetMenuBar(MBar)
    def SelectMenu(self,event):
        ID = event.GetId()
        if ID == 0:
            dialog = wx.FileDialog(self,"ファイルを選択",wildcard="テキスト形式|*.txt|すべての形式|*.*",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
            if dialog.ShowModal()==wx.ID_OK:
                path = dialog.GetPath()
                openfile = open(path,"r",encoding="UTF-8",errors="ignore")
                self.textctrl.SetValue(openfile.read())
                openfile.close()
        elif ID == 1:
            sys.exit()
app = wx.App(0)
MyFrame().Show(True)
app.MainLoop()

成功例


こんな感じで[開く]で選択したファイルに内容が表示されます

文字化けへの対処

このコードではBOM無しのUTF-8で開くようにしています。よって、それ以外の文字コードで保存されたファイルは文字化けされてしまいます。
対処法として、文字コードを自動識別することがあげられます。文字コードを自動識別するための方法は結構前に投稿した記事にあります。
↓↓
Pythonでファイルを読み込む / 書き込む / エンコードを検出する


どうだったでしょうか。大事なことだったのでもう一度いいますね。
今回の記事は前につくった記事と組み合わせて使うと、結構本格的なものになるので、
まだ見ていない人はぜひ見ていってください!!
wxPythonでシンプルなメモ帳を作成する

動作環境:
Windows 10
64bit
Python 3.9.1
wxPython 4.1.1a1

コメント気軽にどうぞ!

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ