PyQt 4学習ノート1基本フレームワーク

3546 ワード

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore


#                 (class)、  (data)   (method)。
#         Example  ,    QtGui.QWidget 。       
#       :    Example      ,      QtGui.QWidget
#       。super()    Example      ,           。
# __init__()   Python      。
class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        #  GUI      initUI()  。
        self.initUI()

    def initUI(self):

        #         ,         (tooltips)   。
        QtGui.QToolTip.setFont(QtGui.QFont('SanSerif', 10))

        # setToolTip()           。
        self.setToolTip('This is a Qwidget widget')

        #       (button)  ,        。       
        #         ,            。        
        #    QtGui.QWidget  Example  。
        btn = QtGui.QPushButton('Button', self)
        btn.setToolTip('This is a QPushButton widget')

        #         ,           。sizeHint()   
        #          。
        btn.resize(btn.sizeHint())
        btn.move(50, 50)

        qbtn = QtGui.QPushButton('Quit', self)

        # PyQt4            (signal & slot)  。      ,
        #     clicked  。    Qt         Python(   )。
        # QtCore.QCoreApplication       。          。
        # instance()               。  :QtCore.QCoreApplication
        #   QtGui.QApplication   。clicked   quit()    ,    
        #     。         :       。      ,        。
        qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(150, 50)

        #           QtGui.QWidget 。setGeometry()      。
        #                     。          x y  。
        #             ,            。   ,  resize()
        #    move()           。
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Icon')

        #          
        self.center()

        # setWindowIcon()           。       QtGui.QIcon  。
        # QtGui.QIcon()               。
        self.setWindowIcon(QtGui.QIcon('web.png'))

        self.show()


    #    QtGui.QWidget ,     QtGui.QCloseEvent  。      
    #   ,      closeEvent()      。
    def closeEvent(self, event):
        #      ,         ,   ‘Yes' 'No'。         
        #     。                 。            
        #        。               。
        reply = QtGui.QMessageBox.question(self, 'Message',
                                           'Are you sure to quit?',
                                           QtGui.QMessageBox.Yes |
                                           QtGui.QMessageBox.No,
                                           QtGui.QMessageBox.No)

        #      ,    'Yes',            。  ,     。
        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def center(self):

        #          ,         。
        qr = self.frameGeometry()

        # QtGui.QDesttopWidget           ,      。
        #             ,         。
        cp = QtGui.QDesktopWidget().availableGeometry().center()

        #         ,       。           。         。
        qr.moveCenter(cp)

        #              qr      ,           。
        self.move(qr.topLeft())

        #            。       !       。
        
def main():

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


if __name__ == '__main__':
    main()

原文住所:http://zetcode.com/gui/pyqt4/firstprograms/