PyQtカーソルの変更、マウスの移動によるコントロール効果の変更

13621 ワード

マウスイベント
  • GUIプログラミングの一般的なニーズの一つは、ボタンや他のコントロールのカーソルを移動、移動、押圧するときの3つの状況のコントロールスタイルが異なり、この3つの状況をコントロールの3つの状態
  • と呼ぶ人もいる.
  • カーソルのスタイルを変更する必要がある場合
  • カーソル
  • マウスカーソル
    self.btn.setCursor(QCursor(Qt.PointingHandCursor))
    
    を変更
    パラメータ
    効果
    PointingHandCursor
    手型になる
    CrossCursor
    十字型に変更
    ArrowCursor
    矢印に変更
    UpArrowCursor
    上向き矢印に変更
    IBeamCursor
    テキスト入力型に変更
    WaitCursor
    待機型に変更
    BusyCursor
    ビジーになる
    ForbiddenCursor
    禁止型になる
    WhatsThisCursor
    疑問符型にする
    SizeVerCursor
    垂直ドラッグに変更
    SizeHorCursor
    水平ドラッグにする
    SizeBDiagCursor
    対角線調整大小型化
    SizeAllCursor
    オブジェクトを移動する
    SplitHCursor
    水平分割
    SplitVCursor
    垂直分割
    OpenHandCursor
    オープンにする
    ClosedHandCursor
    オフにする
    BlankCursor
    空白にする

  • イベントにマウスを移動
  • コントロールのマウスをバインド関数に移動または移動し、独自の機能を行うには、このコントロール(QLable、QtushButton)を継承し、このような関連メソッド
    class MyBtn(QPushButton):
        def __init__(self, text):
            super().__init__(text)
        
        def mouseMoveEvent(self, e):
            print("ok")
        
        def mousePressEvent(self, e):
            print("Not Ok")
        
        def enterEvent(self, a0):
            print("123")
            return super().enterEvent(a0)
        
        def leaveEvent(self, a0):
            print("321")
            return super().leaveEvent(a0)
    
  • を書き換えるクラスを書く必要があります.
  • 関連イベントのまとめ(個人時間が限られているため、その機能をすべて検索してテストすることはできませんが、ここではよく使われる一部を整理して、簡単な英語の組み合わせで、分かりにくいはずです)
    ≪イベント|Events|ldap≫
    さぎょう
    enterEvent
    マウス移動トリガ
    leaveEvent
    マウスオフトリガ
    mouseDoubleClickEvent
    マウスダブルクリックトリガ
    mouseMoveEvent
    マウス移動トリガ
    mousePressEvent
    マウス押圧トリガ
    mouseReleaseEvent
    マウスリリーストリガ
    keyPressEvent
    キーボード押下トリガ
    keyReleaseEvent
    キーボードリリーストリガ
    closeEvent
    クローズ時にトリガー
    resizeEvent
    大時間トリガの設定
    showEvent
    コントロール表示時にトリガー
    dragLeaveEvent
    dragMoveEvent
    dropEvent
    focusInEvent
    focusOutEvent
    hideEvent
    inputMethodEvent
    installEventFilter
    customEvent
    dragEvent
    actionEvent
    changeEvent
    childEvent
    contextMenuEvent
    moveEvent
    nativeEvent
    paintEvent
    removeEventFliter
    tabletEvent
    timerEvent
    wheelEvent
  • 詳細コード
    from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QVBoxLayout
    from PyQt5.QtGui import QCursor, QMouseEvent
    from PyQt5.QtCore import Qt
    import sys
    
    
    class testWindow(QWidget):
        def __init__(self):
            super().__init__()
    
            self.btn1 = QPushButton("btn1")
            self.btn2 = QPushButton("btn2")
            self.btn3 = MyBtn(text="btn3")
            self.btn1.setCursor(QCursor(Qt.PointingHandCursor))
            self.btn2.setCursor(QCursor(Qt.CrossCursor))
            self.btn3.event
    
            self.layout = QVBoxLayout()
    
            self.layout.addWidget(self.btn1)
            self.layout.addWidget(self.btn2)
            self.layout.addWidget(self.btn3)
    
            self.setLayout(self.layout)
    
        def test(self):
            print("ok")
    
    class MyBtn(QPushButton):
        def __init__(self, text):
            super().__init__(text)
        
        def mouseMoveEvent(self, e):
            print("ok")
        
        def mousePressEvent(self, e):
            print("Not Ok")
        
        def enterEvent(self, a0):
            print("123")
            return super().enterEvent(a0)
        
        def leaveEvent(self, a0):
            print("321")
            return super().leaveEvent(a0)
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        w = testWindow()
        w.show()
        sys.exit(app.exec_())