読者です 読者をやめる 読者になる 読者になる

simudaru's blog

Python, Rなどのメモを残していこうと思います。  よろしくお願いいたします。

【python】PyQt4のQtGuiを使ってみる その1

以下を参考にした。zetcode.com

# coding: utf-8
import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):
    u'''
    下記内容の練習
    http://zetcode.com/gui/pyqt4/firstprograms/
    
    ・終了ボタンの設置。
    ・終了ボタンにバルーンヘルプを設定。
    ・ウィンドウ右上の終了ボタン押されたときに確認のダイアログを出す。
    ・ディスプレイの中心に表示。
    '''
    
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
        
    def initUI(self):
        self.resize(250, 150)
        self.center()
        
        quit_button = QtGui.QPushButton(u'終了(確認なし)', self)
        quit_button.setToolTip(u'アプリケーションを終了します')
        quit_button.clicked.connect(QtCore.QCoreApplication.instance().quit)
        quit_button.resize(quit_button.sizeHint())
        quit_button.move(50, 50)
        
        self.setWindowTitle(u'First programsの内容')
        self.show()
    
    def center(self):
        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())
        
    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(self, u'確認',
                                           u'終了してよろしいですか?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
        
        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

main()

・QApplicationオブジェクトは必須
・QApplicationオブジェクトのexec_でアプリケーションを実行
・QWidgetオブジェクトはユーザーインターフェース

・QPushButtonはボタン

・QMessageBox.questionはYes/No付きメッセージボックスなどが作れる

・QToolTipを使うとウィジェットにマウスオーバーした際に
 バルーンヘルプが出せる

・QIconとsetWindowIconを使うとアイコンを設定できる