以前投稿した記事「Bash実行中にフォルダ選択を行うGUI」の続きです。
以前、フォルダを選択するだけのGUIを作成したことで、GUIを作成する手間を省きつつ扱いやすいインストールスクリプトを作ることができました。しかし、少し問題が…
GUIが使いにくい!!!
tkinterではどうしても乗り越えられない壁の一つにGUIデザインが挙げられます。
そこで、いつも見慣れているGUIでファイルやフォルダ選択を行うためにQtのQFileDialogクラスを使用することにしました。
このプログラムは「ウララ検出チャレンジ」のファイル選択に使用しました。
以下のURLから該当のリポジトリに飛びます。
select-file-folder-dialog-PyQt5のリポジトリのURLは以下から↓
コード
…といっても、PyQtとtkinterの記法はほぼ同じである上に内容も非常にシンプルなので、あまり書き換えるポイントは多くありません。
tkinter実装時と異なり、--title
オプションを追加しました。csvファイル選択中なのかビデオファイル選択中なのかが紛らわしいということに気づいて、タイトルを編集するオプションを追加しました。
#!/bin/python3 # =========================== # Ar-Ray-code 2022 # =========================== from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog import sys import argparse class Application(QWidget): def __init__(self): super().__init__() parser = argparse.ArgumentParser(description='Select folder') parser.add_argument('-e', '--entry', help='entry point folder') parser.add_argument('-f', '--file', help='Using file dialog.', action='store_true') parser.add_argument('-t', '--title', help='title of dialog', default='Select folder or file') args = parser.parse_args() self.file_flag = args.file self.entry = args.entry self.title = args.title self.create_widgets() def create_widgets(self): if(self.file_flag==True): selected_usb_device = QFileDialog.getOpenFileName(self, self.title, self.entry)[0] else: selected_usb_device = QFileDialog.getExistingDirectory(self, self.title, self.entry) print(selected_usb_device) sys.exit(0) if __name__ == "__main__": app = QApplication(sys.argv) ex = Application()
良さそう!フォーマット選択などのオプションも必要に応じて追加したいです。