Python Python 活用 プログラミング

【python】【PyQt5】デスクトップアプリ化して配布 -その3 ツールバー(QToolBar)の追加-

 

前回の記事「デスクトップアプリ化して配布 -その2 メニューの追加-」でメニューを追加しました。

その続きとして、次はツールバー(QToolBar)を追加します。

参考【python AI】セマンティックセグメンテーションの実装方法 -学習と確認-

続きを見る

 

本記事の内容

  • ツールバーの配置
  • ツールバーのアクションの設定

 

 

今回の記事では、次のようなツールバーを追加していきます。

これがあるだけで、だいぶアプリらしさが出てきますね。

 

サンプルコード

 

スポンサーリンク

app.batを変更

今回は新しく、main_view3.pyを作成していきます。

サンプルコードをダウンロードされた方は、app.batを次のように変更してください。

main_view3.pyを起動するように変更しています。

 

app.batを実行するとデスクトップアプリが起動するようになっています。

 

 

ツールバーの配置

 

前回の記事「デスクトップアプリ化して配布 -その2 メニューの追加-」で作成したmain_view2.pyをベースにツールバーを追加していきます。

追加する場所は、MainViewの__init__の中です。

次のコードを追加します。

 

処理流れ

  • QToolBarでツールバーを定義
  • setToolButtonStyleでアイコン付きのボタンを選択
  • self.addToolBarでツールバーをデスクトップアプリに追加して、Qt.TopToolBarAreaで上に配置。

 

 

配置は、デスクトップアプリ起動後でもユーザーがツールバーをドラッグ&ドロップで、上下左右に移動することができます。

 

あとは、このツールバーにボタンとアクションを設定します。

 

 

ツールバーのアクションを設定

ツールバーのアクションを設定していきます。

メニューと同じく、アクションはQActionを使って設定していきます。

 

前回作成した、new_action関数を使いまわします。

 

関数の引数は以下の役割を持っています。

引数 役割
text メニューの文字列。
solt メニューのアクション。処理する関数を指定する。
shortcut 'Ctrl+Q'などショートカットを指定。
icon メニューに表示するicon。iconsフォルダから読み込むようになっています。
tip カーソルがメニュー上にきたときに、ステータスバーに表示するコメント。
enable ボタンをロックするかどうか。

 

 

この関数を使って、アクションを設定していきましょう。

ファイル開く、保存するという、よくあるボタンを配置します。

 

やっていることは

処理流れ

  • new_actionでアクションを設定して取得
  • tools(QToolBar)にaddActionでアクションを設定

 

 

アクションで実行される関数を作成

ボタンを押した時に実行される、self.open_fileとself.save_fileを作成します。

中身は適当にCSVを読み書きしているだけなので、おまけ程度に、参考にしていただければと思います。

 

ここでは新しく、ファイルダイアログを使うことができるQFileDialogとメッセージを表示するQMessageBoxを使っていきます。

メソッド 役割
QFileDialog.getOpenFileName ファイルを開くダイアログ
引数1:self固定
引数2:ダイアログタイトル
引数3:初期のファイル名
引数4:ファイルフィルタ
QFileDialog.getSaveFileName ファイルを保存するダイアログ
引数1:self固定
引数2:ダイアログタイトル
引数3:初期のファイル名
引数4:ファイルフィルタ
QMessageBox.information 通常のメッセージボックス
引数1:self固定
引数2:メッセージタイトル
引数3:メッセージ内容
QMessageBox.critical エラーのメッセージボックス
引数1:self固定
引数2:メッセージタイトル
引数3:メッセージ内容

 

読み込んだデータは保持しておきたいので、__init__の最後に次のコードを追加します。

 

open_file

csvファイルを読み込むようにします。

読み込んだデータは、load_dataに保持します。

 

読み込みのファイルダイアログには、QFileDialog.getOpenFileNameを使います。

 

save_file

csvファイルに書き込むようにします。

書き込むデータは、load_dataをそのまま保存します。

データが読み込まれていない場合は、エラーを出力しています。

 

書き込み用のファイルダイアログはQFileDialog.getSaveFileNameを使います。

 

これで、ツールバーもついた、デスクトップアプリになりました。

完成したmain_view3.pyはgit hubのコードを参照ください。<参照コード>

-Python, Python 活用, プログラミング

© 2021 ひつじ工房