Qt for Pythonであらかじめ用意されているファイル、フォント、色の選択ダイアログの呼び出し例です。
「SpecialDialogs.py」というファイルを作成して以下の様なPythonのコードを書きます。
# -*- coding: utf-8 -*-
import os
# Qt for Pythonのクラスを使えるようにする
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from PySide2.QtCore import *
# 自作ダイアログクラス
class MyFirstDialog(QDialog):
# ウィンドウの初期化処理
def __init__(self, parent=None):
# ベース・クラスの初期化
super(MyFirstDialog, self).__init__(parent)
# ウィンドウタイトルを設定
self.setWindowTitle("Special Dialogs")
layout = QVBoxLayout()
# ファイル保存ダイアログを表示するためのボタンを設定
fileSavingButton = QPushButton("Save file.")
fileSavingButton.clicked.connect(self.saveFile)
layout.addWidget(fileSavingButton)
# ファイルオープンダイアログを表示するためのボタンを設定
fileOpenButton = QPushButton("Open file.")
fileOpenButton.clicked.connect(self.openFile)
layout.addWidget(fileOpenButton)
# ファイルオープンダイアログ(複数選択可能)を表示するためのボタンを設定
filesOpenButton = QPushButton("Open files.")
filesOpenButton.clicked.connect(self.openFiles)
layout.addWidget(filesOpenButton)
# ディレクトリ選択ダイアログを表示するためのボタンを設定
dirSelectionButton = QPushButton("Select directory.")
dirSelectionButton.clicked.connect(self.selectDirectory)
layout.addWidget(dirSelectionButton)
# フォント選択ダイアログを表示するためのボタンを設定
fontSelectionButton = QPushButton("Select font.")
fontSelectionButton.clicked.connect(self.selectFont)
layout.addWidget(fontSelectionButton)
# 色選択ダイアログを表示するためのボタンを設定
colorSelectionButton = QPushButton("Select color.")
colorSelectionButton.clicked.connect(self.selectColor)
layout.addWidget(colorSelectionButton)
self.setLayout(layout)
# ファイル保存ダイアログの表示
def saveFile(self):
(fileName, selectedFilter) = QFileDialog.getSaveFileName(self, 'Save file', os.path.expanduser('~') + '/Desktop')
if fileName != "":
QMessageBox.information(self, "File", fileName)
# ファイルオープンダイアログの表示
def openFile(self):
(fileName, selectedFilter) = QFileDialog.getOpenFileName(self, 'Open file', os.path.expanduser('~') + '/Desktop')
if fileName != "":
QMessageBox.information(self, "File", fileName)
# ファイルオープンダイアログ(複数選択可能)の表示
def openFiles(self):
(fileNames, selectedFilter) = QFileDialog.getOpenFileNames(self, 'Open files', os.path.expanduser('~') + '/Desktop')
if 0<len(fileNames):
message = ""
for name in fileNames:
message += name
message += ", "
QMessageBox.information(self, "Files", message)
# ディレクトリ選択ダイアログの表示
def selectDirectory(self):
dirName = QFileDialog.getExistingDirectory(self, 'Select Directory', os.path.expanduser('~') + '/Desktop')
if dirName != "":
QMessageBox.information(self, "Directory", dirName)
# フォント選択ダイアログの表示
def selectFont(self):
(ok, font) = QFontDialog.getFont(QFont("MS UI Gothic"), self, "Select font")
if ok:
fontInfo = font.toString()
QMessageBox.information(self, "Font", fontInfo)
# 色選択ダイアログの表示
def selectColor(self):
color = QColorDialog.getColor(Qt.green, self)
if color.isValid():
name = color.name()
QMessageBox.information(self, "RGB color", name)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
# 自作ダイアログをインスタンス化して表示
ui = MyFirstDialog()
ui.show()
app.exec_()
このファイルをダブルクリックするか、以下の様にコマンドプロンプトで実行すると作成したウィンドウが表示されます。
各ボタンを押すとそれに応じたダイアログがが表示されます。ダイアログを閉じるには右上の「✕」ボタンを押します。
表示されるダイアログは以下の通りです。
def saveFile(self):
(fileName, selectedFilter) = QFileDialog.getSaveFileName(self, 'Save file', os.path.expanduser('~') + '/Desktop')
if fileName != "":
QMessageBox.information(self, "File", fileName)
QFileDialog.getSaveFileName()で保存ファイルを選択するためのダイアログが表示されます。
選択結果は(選択されたファイルのフルパスの文字列, 選択されているファイルの種類の文字列)として返されます。ダイアログがキャンセルされた場合はファイルパスが空文字列になります。
def openFile(self):
(fileName, selectedFilter) = QFileDialog.getOpenFileName(self, 'Open file', os.path.expanduser('~') + '/Desktop')
if fileName != "":
QMessageBox.information(self, "File", fileName)
QFileDialog.getOpenFileName()で開くファイルを選択するためのダイアログが表示されます。
選択結果は(選択されたファイルのフルパスの文字列, 選択されているファイルの種類の文字列)として返されます。ダイアログがキャンセルされた場合はファイルパスが空文字列になります。
def openFiles(self):
(fileNames, selectedFilter) = QFileDialog.getOpenFileNames(self, 'Open files', os.path.expanduser('~') + '/Desktop')
if 0<len(fileNames):
message = ""
for name in fileNames:
message += name
message += ", "
QMessageBox.information(self, "Files", message)
QFileDialog.getOpenFileNames()で開くファイルを選択するためのダイアログが表示されます。このダイアログではCtrlキーやShiftキーをそしてファイルを選択することで複数のファイルが選択可能です。
選択結果は(選択されたファイルのフルパスの文字列のリスト, 選択されているファイルの種類の文字列)として返されます。ダイアログがキャンセルされた場合はファイルパスのリストが空になります。
def selectDirectory(self):
dirName = QFileDialog.getExistingDirectory(self, 'Select Directory', os.path.expanduser('~') + '/Desktop')
if dirName != "":
QMessageBox.information(self, "Directory", dirName)
QFileDialog.getExistingDirectory()でディレクトリを選択するためのダイアログが表示されます。
選択結果はディレクトリのフルパスの文字列として返されます。ダイアログがキャンセルされた場合はディレクトリパスが空文字列になります。
def selectFont(self):
(ok, font) = QFontDialog.getFont(QFont("MS UI Gothic"), self, "Select font")
if ok:
fontInfo = font.toString()
QMessageBox.information(self, "Font", fontInfo)
QFontDialog.getFont()でフォントを選択するためのダイアログが表示されます。ここではダイアログが開かれた段階では「MS UI Gothic」が選択されているように設定しています。
選択結果は(QFontオブジェクト, ブール値)として返されます。ダイアログがキャンセルされた場合は戻り値のブール値がFalseになります。
def selectColor(self):
color = QColorDialog.getColor(Qt.green, self)
if color.isValid():
name = color.name()
QMessageBox.information(self, "RGB color", name)
QColorDialog.getFont()で色を選択するためのダイアログが表示されます。ここではダイアログが開かれた段階では緑色(Qt.green)が選択されているように設定しています。
選択結果はQColorオブジェクトとして返されます。ダイアログがキャンセルされた場合は戻り値が無効なQColorオブジェクトとなり、QColorオブジェクトのisValid() がFalseを返します。