【问题标题】:PyQt5 all button signals/events?PyQt5所有按钮信号/事件?
【发布时间】:2020-03-13 21:02:44
【问题描述】:

按钮上MOUSE1的信号是widget.clicked,MOTION和MOUSE2的信号是什么?此外,如果有人知道一个列出所有信号的网站,那真的很有帮助

import sys, pyautogui

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


def pressed_mouse2():
    pass


def window():
    app = QApplication(sys.argv)
    root = QMainWindow()
    root.setGeometry(200, 200, 500, 500)
    root.setWindowTitle('Test')
    root.setWindowFlags(QtCore.Qt.FramelessWindowHint)
    root.setAttribute(Qt.WA_TranslucentBackground)

    button = QtWidgets.QPushButton(root)

    #i need here to signal when user has pressed on MOUSE2 on the button
    button.clicked.connect(clicked)
    button.move(50,50)

    root.show()
    sys.exit(app.exec_())

window()

【问题讨论】:

    标签: python-3.x button widget pyqt5


    【解决方案1】:

    您只需要将按钮的clicked 信号连接到您的函数。

    button.clicked.connect(pressed_mouse2)
    

    现在,当您单击按钮时,您可以在此处执行任何代码:

    def pressed_mouse2():
        print('Button clicked')
    

    有很多种小部件,每种都有不同的信号。您可以在 Qt 文档中找到它们。 Here 是 QAbstractButton 的信号,由 QPushButton 继承。

    没有预定义的右键单击按钮信号,但您可以继承 QPushButton 并在mousePressEvent() 中发出您自己的信号。

    class Button(QPushButton):
    
        right_clicked = pyqtSignal()
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
    
        def mousePressEvent(self, event):
            super().mousePressEvent(event)
            if event.button() == Qt.RightButton:
                self.right_clicked.emit()
    

    它会回复:

    button = Button(root)
    button.right_clicked.connect(pressed_mouse2)
    

    【讨论】:

    • 哦,我忘了输入正确的函数名称,但这不是我要求的,当用户单击按钮上的 MOUSE2 时检测到的信号名称是什么,但感谢文档,我会调查的。
    • @votka35 MOUSE2 是什么?我不明白“检测用户何时单击按钮上的 MOUSE2”是什么意思。
    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多