python3.4下PyQt5信号槽使用
2015-12-21 21:39
736 查看
自己是学C++的,自从接触Pyhon并使用,发现写代码非常顺畅方便,甚爱之。在用Python写一个小的工具软件时,苦于没有用户操作的界面接口。得知PyQt界面库就专为Python而生,于是乎便用上了。
使用时创建了2个按钮,但是在连接按钮的点击事件到自定义的槽函数时,迟迟未能连上。经过奋战与各种搜索,终于解决了问题。
1、自定义槽函数。
(1)如果加了
这个装饰,可以通过如下代码进行信号槽连接。
槽函数代码如下:
(2)如果未加装饰,而是像一个普通函数一样的方法,可通过如下方式进行连接。
槽函数定义如下:
如果不加lambda:这个修饰,编译会报错的。报错如下
TypeError: connect() slot argument should be a callable or a signal, not 'NoneType'
基本含义就是定义的函数是一个无返回值的函数,connect时将函数进行了返回类型判断是一个无效类型,从而导致编译报错。
亦可参考国外大拿的说明 http://stackoverflow.com/questions/10730131/create-dynamic-button-in-pyqt
2、系统常用槽函数
比如一个退出按钮点击后退出槽函数,可通过如下代码进行连接。
最后,上图。
嗯,弄好之后,感觉世界又美好了一些。 :)
技术改变世界,阅读改变人生。
使用时创建了2个按钮,但是在连接按钮的点击事件到自定义的槽函数时,迟迟未能连上。经过奋战与各种搜索,终于解决了问题。
1、自定义槽函数。
(1)如果加了
@QtCore.pyqtSlot(int)
这个装饰,可以通过如下代码进行信号槽连接。
self.connect(self.btnStart, QtCore.SIGNAL('clicked()'), self.startwatch)
槽函数代码如下:
@QtCore.pyqtSlot(int) def startwatch(self): msgBox=QtGui.QMessageBox.about(self, "test", "clicked") print('ok clicked') pass
(2)如果未加装饰,而是像一个普通函数一样的方法,可通过如下方式进行连接。
self.btnStart.clicked.connect(lambda: self.startwatch())
槽函数定义如下:
def startwatch(self): msgBox=QtGui.QMessageBox.about(self, "test", "clicked") print('ok clicked') pass
如果不加lambda:这个修饰,编译会报错的。报错如下
TypeError: connect() slot argument should be a callable or a signal, not 'NoneType'
基本含义就是定义的函数是一个无返回值的函数,connect时将函数进行了返回类型判断是一个无效类型,从而导致编译报错。
亦可参考国外大拿的说明 http://stackoverflow.com/questions/10730131/create-dynamic-button-in-pyqt
2、系统常用槽函数
比如一个退出按钮点击后退出槽函数,可通过如下代码进行连接。
self.connect(self.btnExit, QtCore.SIGNAL('clicked()'), QtGui.qApp, QtCore.SLOT('quit()'))
最后,上图。
嗯,弄好之后,感觉世界又美好了一些。 :)
技术改变世界,阅读改变人生。
相关文章推荐
- 'NoneType' object has no attribute '__getitem__'和argument of type 'NoneType' is not iterable 异常的解决办法
- TypeError: ‘NoneType’ object is not iterable
- python 判断参数为Nonetype类型或空
- Python如何判断<type 'NoneType'>数据类型
- wxpython模板程序,包括各个实例
- wxpython菜单栏、子菜单栏、弹出菜单栏、状态栏小程序学习源代码分享
- wxpython中列表框(ListBox类)、复选列表框(CheckListBox)、下拉选项(Choice)、进度条(Gauge)、滑块(Slider)使用实例源码分享
- wxpython中单选框的两种创建方式源码展示
- wxpython中复选框的基本使用源码实例
- Python中的函数
- python基础知识
- python基础知识
- [python]python strip()方法
- python的不可变量和可变量
- Python的种种
- python-63: 为什么要学习BS4
- Python collections.defaultdict 笔记
- python--python3爬虫之模拟登录知乎
- Learning Python(6)--Python的命令行解析argparse模块
- Python练习程序(三)函数练习--ATM模拟