#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__();
self.initUI()
def initUI(self):
self.button = QtGui.QPushButton("print clicked",self)
self.clicked='not_clicked'
self.button.clicked.connect(lambda opt='clicked': self.option(opt))
def option(self,opt):
self.clicked=opt
print opt
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
if __name__=='__main__':
main()
考虑这段代码。现在,当我点击“打印点击”按钮时。打印'False'(在选项功能中)。为什么会这样?
答案 0 :(得分:1)
QPushButton
从clicked
继承信号QAbstractButton
Qt文档说明:
void QAbstractButton :: clicked(bool checked = false )[signal]
当按钮被激活(即按下然后在鼠标光标位于按钮内部时释放),键入快捷键或调用click()或animateClick()时,会发出此信号。值得注意的是,如果调用setDown(),setChecked()或toggle(),则不会发出此信号。
如果按钮可检查,如果选中该按钮,则选中该选项;如果未选中该按钮,则选中该选项。
插槽接收的参数表示是否选中了按钮。由于QPushButton
默认为不,因此无法检查。参数总是False
。这就是'False'印刷的原因。
如果您希望打印结果不同,打印“True”或“False”,您可以设置按钮checkable
或将其更改为QCheckBox
。
例如,initUI
应为
def initUI(self):
self.button = QtGui.QCheckBox("print clicked",self)
self.button.setCheckable(True)
self.clicked='not_clicked'
self.button.clicked.connect(lambda opt='clicked': self.option(opt))
或
def initUI(self):
#self.button = QtGui.QPushButton("print clicked",self)
self.button = QtGui.QCheckBox("print clicked",self)
self.clicked='not_clicked'
self.button.clicked.connect(lambda opt='clicked': self.option(opt))