Python GUI编程网 > PyQt5控件_PyQt5控件方法大全 > PyQt5按钮控件QPushButton点击有效区域设置
python教程

PyQt5按钮控件QPushButton点击有效区域设置

发布博客:2022年11月15日 02:11
阅读:49
作者:Python GUI编程网

在一些应用场景下,按钮的点击需要设定有效区域,根据项目需求来决定,这里我们为了试验更明显就不要求那么精细了,通过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_())

QPushButton

注意,上图中我们第一次点击发现返回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('按钮被点击了'))