Pyqt-qfiledialog-widget

提供:Dev Guides
移動先:案内検索

PyQt-QFileDialogウィジェット

このウィジェットは、ファイルセレクターダイアログです。 これにより、ユーザーはファイルシステムをナビゲートし、開くまたは保存するファイルを選択できます。 ダイアログは、静的関数を介して、またはダイアログオブジェクトでexec_()関数を呼び出すことにより呼び出されます。

*QFileDialog* クラスの静的関数(getOpenFileName()およびgetSaveFileName())は、現在のオペレーティングシステムのネイティブファイルダイアログを呼び出します。

ファイルフィルターを適用して、指定した拡張子のファイルのみを表示することもできます。 開始ディレクトリとデフォルトのファイル名も設定できます。

QFileDialogクラスの重要なメソッドと列挙は、次の表に記載されています-

Sr.No. Methods & Description
1

getOpenFileName()

開くためにユーザーが選択したファイルの名前を返します

2

getSaveFileName()

ユーザーが選択したファイル名を使用してファイルを保存します

3

setacceptMode()

ファイルボックスを開くダイアログまたは保存ダイアログとして機能させるかどうかを決定します

QFileDialog.AcceptOpen

QFileDialog.AcceptSave

4

setFileMode()

選択可能なファイルのタイプ。 列挙された定数は-

QFileDialog.AnyFile

QFileDialog.ExistingFile

QFileDialog.Directory

QFileDialog.ExistingFiles

5

setFilter()

言及された拡張子を持つファイルのみを表示します

ファイルダイアログを呼び出す両方の方法を次の例に示します。

最初のボタンは、静的メソッドによってファイルダイアログを呼び出します。

fname = QFileDialog.getOpenFileName(self, 'Open file',
   'c:\\',"Image files (*.jpg *.gif)")

選択した画像ファイルがラベルウィジェットに表示されます。 2番目のボタンは、QFileDialogオブジェクトでexec_()メソッドを呼び出すことにより、ファイルダイアログを呼び出します。

dlg = QFileDialog()
dlg.setFileMode(QFileDialog.AnyFile)
dlg.setFilter("Text files (*.txt)")
filenames = QStringList()

   if dlg.exec_():
      filenames = dlg.selectedFiles()

選択したファイルの内容がTextEditウィジェットに表示されます。

f = open(filenames[0], 'r')
   with f:
      data = f.read()
      self.contents.setText(data)

完全なコードは次のとおりです-

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class filedialogdemo(QWidget):
   def __init__(self, parent = None):
      super(filedialogdemo, self).__init__(parent)

      layout = QVBoxLayout()
      self.btn = QPushButton("QFileDialog static method demo")
      self.btn.clicked.connect(self.getfile)

      layout.addWidget(self.btn)
      self.le = QLabel("Hello")

      layout.addWidget(self.le)
      self.btn1 = QPushButton("QFileDialog object")
      self.btn1.clicked.connect(self.getfiles)
      layout.addWidget(self.btn1)

      self.contents = QTextEdit()
      layout.addWidget(self.contents)
      self.setLayout(layout)
      self.setWindowTitle("File Dialog demo")

   def getfile(self):
      fname = QFileDialog.getOpenFileName(self, 'Open file',
         'c:\\',"Image files (*.jpg *.gif)")
      self.le.setPixmap(QPixmap(fname))

   def getfiles(self):
      dlg = QFileDialog()
      dlg.setFileMode(QFileDialog.AnyFile)
      dlg.setFilter("Text files (*.txt)")
      filenames = QStringList()

      if dlg.exec_():
         filenames = dlg.selectedFiles()
         f = open(filenames[0], 'r')

         with f:
            data = f.read()
            self.contents.setText(data)

def main():
   app = QApplication(sys.argv)
   ex = filedialogdemo()
   ex.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

上記のコードは、次の出力を生成します-

QFileDialog Widget Output1 QFileDialog Widget Output2