找出是不是使用 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 【问题描述】:QPushButton
lightsBtn
是一个切换按钮,用于打开和关闭灯。当用户按下lightsBtn
时,函数lightsBtnHandler
将检查按钮当前是否被选中,并调用turnOnLights
或turnOffLights
。
我认为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的主要内容,如果未能解决你的问题,请参考以下文章