PyQt5按钮控件QPushButton点击有效区域设置
在一些应用场景下,按钮的点击需要设定有效区域,根据项目需求来决定,这里我们为了试验更明显就不要求那么精细了,通过QAbstractButton中的QPushButton按钮来看看点击有效区域怎么设置的。
在一些应用场景下,按钮的点击需要设定有效区域,根据项目需求来决定,这里我们为了试验更明显就不要求那么精细了,通过QAbstractButton中的QPushButton按钮来看看点击有效区域怎么设置的。
主要学习函数:
hidButton(QPoint)
这里我们需要设置点击有效区域的坐标,QPushButton的点击有小区就在按钮上,为了试验明显,我们需要重写一下这个方法(注意hitButton返回结果为bool,表示点击是否有效)。
class Btn(QPushButton): def hitButton(self, point): print(point) return True # 这里注意,如果返回False表示点击无效,实例化出来的对象不能返回对应结果
其实这段代码主要目的是返回按钮是不是被点击了,如果返回True表示每次点击动作有效,实例化出来的QPushButton对象则完成点击动作。这里的piont参数表示鼠标点击按钮时的坐标位置。下面实例化一个按钮来试试。
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('按钮点击 - PyQt5中文网') window.resize(600, 450) class Btn(QPushButton): def hitButton(self, point): print(point) return True # 这里注意,如果返回False表示点击无效,实例化出来的对象不能返回对应结果 btn1 = Btn(window) btn1.move(60, 60) btn1.resize(120, 40) btn1.setText('按钮1') btn1.pressed.connect(lambda: print('按钮被点击了')) window.show() sys.exit(app.exec_())
注意,上图中我们第一次点击发现返回2组个坐标,这是因为一次hitButton有按下和松开2个动作,第二次点击不松开鼠标则返回一组坐标。
现在我们来试试让按钮控件左边点击有效,右边点击无效,这里的逻辑就是看鼠标点击坐标只能在X坐标的左半个。这里不好演示出效果,直接上代码。
class Btn(QPushButton): def hitButton(self, point): if point.x() < self.width() / 2: return True return False btn1 = Btn(window) btn1.move(60, 60) btn1.resize(240, 80) btn1.setText('按钮1') btn1.pressed.connect(lambda: print('按钮被点击了'))