找出是不是使用 self.sender() 检查 PyQt QPushButton

Posted

技术标签:

【中文标题】找出是不是使用 self.sender() 检查 PyQt QPushButton【英文标题】:Find out whether PyQt QPushButton is checked using self.sender()找出是否使用 self.sender() 检查 PyQt QPushButton 【发布时间】:2017-04-23 15:58:59 【问题描述】:

QPushButtonlightsBtn 是一个切换按钮,用于打开和关闭灯。当用户按下lightsBtn时,函数lightsBtnHandler将检查按钮当前是否被选中,并调用turnOnLightsturnOffLights

我认为self.sender() 能够访问QPushButton 的属性,但我找不到任何有关访问选中状态的文档。

有可能吗?

class Screen(QMainWindow):

    def initUI(self):
        lightsBtn= QPushButton('Turn On')
        lightsBtn.setCheckable(True)  
        lightsBtn.setStyleSheet("QPushButton:checked color: white; background-color: green;")
        lightsBtn.clicked.connect(self.lightsBtnHandler)
        lightsBtn.show()

    def lightsBtnHandler(self):
        if self.sender().?? isChecked():    # How to check for checked state?
            self.turnOnLights()
        else:
            self.turnOffLights()

【问题讨论】:

也许把lightsBtn改成self.lightsBtn然后条件就是if self.lightsBtn.isChecked(): 【参考方案1】:

根据@Matho 的评论,我稍微修改了您的代码。

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
import sys

class Screen(QMainWindow):
    def __init__(self):
        super(Screen, self).__init__()
        self.initUI()

    def initUI(self):
        self.lightsBtn= QPushButton('Turn On')
        self.lightsBtn.setCheckable(True)  
        self.lightsBtn.setStyleSheet("QPushButton:checked color: white; background-color: green;")
        self.lightsBtn.clicked.connect(self.lightsBtnHandler)

        # probaply you will want to set self.lightsBtn 
        # at certain spot using layouts
        self.setCentralWidget(self.lightsBtn)

    def lightsBtnHandler(self):
        if self.lightsBtn.isChecked():
            self.turnOnLights()
        else:
            self.turnOffLights()

    def turnOnLights(self):
        print("truned on")

    def turnOffLights(self):
        print("truned off")

app = QApplication(sys.argv)
window = Screen()
window.show()
sys.exit(app.exec_())

【讨论】:

以上是关于找出是不是使用 self.sender() 检查 PyQt QPushButton的主要内容,如果未能解决你的问题,请参考以下文章

JGit:我可以在不检查的情况下找出某个特定标签是不是存在于 Git 存储库中吗?

如何找出数据集中是不是存在特定表

给定一个特征向量,如何找出我的数据点是不是线性可分

PyQt5 使用 SQLite3,按下按钮进行查询

Lua - 检查数组是不是存在

检查 Firebase 服务是不是可用