PyQt 2 (ダイアログ)

カラーダイアログ

  1. 以下のスクリプトを、pyqt6.py というファイル名で保存します。
    #!env python
    import sys
    from PyQt4 import QtGui
    from PyQt4 import QtCore
    
    
    class ColorDialogExample(QtGui.QWidget):
      
        def __init__(self):
            QtGui.QWidget.__init__(self)
            
            color = QtGui.QColor(0, 0, 0) 
    
            self.w = QtGui.QWidget(self)
            self.w.setStyleSheet('QWidget { background-color: %s }' % color.name())
            
            self.b = QtGui.QPushButton('Dialog', self)
            self.b.clicked.connect(self.showDialog)
    
            vbox = QtGui.QVBoxLayout()
            vbox.addWidget(self.w)
            vbox.addWidget(self.b)
            self.setLayout(vbox)
    
            self.setWindowTitle('ColorDialog')
            self.setGeometry(50, 50, 300, 300)
            
    
        def showDialog(self):
            col = QtGui.QColorDialog.getColor()
            if col.isValid():
                self.w.setStyleSheet('QWidget { background-color: %s }' % col.name())
    
    
    app = QtGui.QApplication(sys.argv)
    cd = ColorDialogExample()
    cd.show()
    sys.exit(app.exec_())
    
  2. 以下のように実行します。
    # python pyqt6.py
    実行後
    [ウインドウ]
    カラーダイアログ
    [カラーダイアログ]
    カラーダイアログで色を選んだ後
    [色を選んだ後]

スクリプト解説

color = QtGui.QColor(0, 0, 0)
カラーデータを作成します。
self.w = QtGui.QWidget(self)
何もないウィジェットを作成します。
self.w.setStyleSheet('QWidget { background-color: %s }' % color.name())
作成したウィジェットのバック色をカラーデータの色にします。
self.b = QtGui.QPushButton('Dialog', self)
ボタンを作成します。
self.b.clicked.connect(self.showDialog)
ボタンをクリックしたら、showDialog()メソッドを実行するように設定します。
col = QtGui.QColorDialog.getColor()
カラーダイアログを表示し、選ばれた色を変数colに代入します。
if col.isValid():
  self.w.setStyleSheet('QWidget { background-color: %s }' % col.name())
ウィジェットのバック色をcolの色にします。

ファイルダイアログ

  1. 以下のスクリプトを、pyqt7.py というファイル名で保存します。
    #!env python
    import sys
    from PyQt4 import QtGui
    from PyQt4 import QtCore
    
    
    class fileDialogSample(QtGui.QWidget):
      
        def __init__(self):
            QtGui.QWidget.__init__(self)
    
            self.te = QtGui.QTextEdit()
    
            self.b = QtGui.QPushButton('Select File', self)
            self.b.clicked.connect(self.showDialog)
    
            vbox = QtGui.QVBoxLayout()
            vbox.addWidget(self.te)
            vbox.addWidget(self.b)
            self.setLayout(vbox)
    
            self.setWindowTitle('File Dialog')        
            self.setGeometry(50, 50, 300, 300)
        
        def showDialog(self):
            fn = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '/User/abe')
            fp = open(fn)
            data = fp.read()
            self.te.setText(data)
            fp.close()
    
    app = QtGui.QApplication(sys.argv)
    ex = fileDialogSample()
    ex.show()
    sys.exit(app.exec_())
    
    
  2. 以下のように実行します。
    # python pyqt7.py
    実行後
    [ウインドウ]
    ファイルダイアログ
    [ファイルダイアログ]
    ファイルダイアログでファイルを選んだ後
    [ファイルを選んだ後]

スクリプト解説

self.te = QtGui.QTextEdit()
TextEditウィジェットを作成します。
このウィジェットは、簡単なテキストエディタです。
fn = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '/User/abe')
ファイルダイアログを作成し、選ばれたファイルの名前を変数fnに代入します。
self.te.setText(data)
ファイルから読み込んだデータをテキストウィジェットに表示します。

練習問題

  1. 前回のスクリプトを参考にして、PyQtによってObjデータとテクスチャデータを読み込むことができるようにしてみましょう。
    # python objdisplay12.py
    実行後
    [実行後のウインドウ]
    Load Object ボタンを押したとき
    [ファイルダイアログ]
    Objデータを選んだ後
    [表示されたObjデータ]

参考


Prev
index | home
abetmhr@gmail.com