2014年11月12日 星期三

PyQt教學(4)-抓取滑鼠以及鍵盤事件


完整範例代碼如下!

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

class QWindow(QWidget):
    def __init__(self):
        super(QWindow, self).__init__()
        self.setWindowTitle("Hello World")
        self.setWindowIcon(QIcon('image.ico'))
        self.setGeometry(480, 200, 400, 300)
        self.label = QLabel(
            '點擊滑鼠左鍵可顯示當前滑鼠的座標!',self)
        self.label.setFont(QFont('Arial',12,0,False))
        self.show()

    #重定義滑鼠事件,讓左鍵點擊時打印滑鼠座標
    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            p = self.mapFromGlobal(QCursor.pos())
            self.label.setText(
                '(%d , %d)'%(p.x(),p.y()))
    
    #重定義鍵盤事件
    def keyPressEvent(self, event):
        if  QApplication.keyboardModifiers() == \
            Qt.ShiftModifier:
            if  event.key() == Qt.Key_A:
                self.label.setText(
                    'you press Shift+A !')
        
        elif event.key() == Qt.Key_F1:
            self.label.setText('you press F1 !')

        elif event.key() == Qt.Key_Return:
            self.label.setText('you press enter !')

        else:
            #使用該按鍵的預設動作
            QWidget.keyPressEvent(self, event)

    #增加離開事件(按右上角叉叉時的動作)
    def closeEvent(self, event):
        QMessageBox.warning(None,'mesage','GoodBye!')

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = QWindow()
    sys.exit(app.exec_())


                                                                                         上一篇    回目錄

沒有留言:

張貼留言