pyqt 使用问题总结
环境:py2.7.14 + pyqt4
1.在使用下列方式创建信号连接时
self.connect(button, QtCore.SIGNAL('clicked()'),self.slot1(arg))
报错提示为:
TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
解析:
这里的slot1()是一个函数,当槽函数是自定义的函数时要这样,用lambda: self.slot1(arg)替换self.slot1(arg)即可
或者这个slot1只是一个method,不需要参数时,用slot1替换slot即可。
看到这,其本质是python调用函数时加不加括号的区别。
def ab():return 1+2
print ab
print ab()
结果:
<function ab at 0x00000000035AB748>
3
综上,其区别在与不加括号时,调用的时这个函数的,这个对象的内存地址,
加括号时你调用的是这个函数的运行结果
参考StackOverflow:
person a:The connect()
method expects a callable argument. When you write self.Soft_Memory()
you are making a call to that method, and the result of that call (None
, since you don't explicitly return anything) is what is being passed to connect()
.
person b:You want to pass a reference to the method itself.
you should use a reference of the method, instead of calling it:
self.PB1.clicked.connect(self.Soft_Memory)
However, you might often need to pass arguments on those functions (I certainly do). On those situations, if you need to use args there's a workaround by using lambda.
self.PB1.clicked.connect(lambda: myfunction(self, arg1, True, "example", arg4))
参考链接:
https://stackoverflow.com/questions/45793966/clicked-connect-error
pyqt 使用问题总结相关推荐
- 【camera】基于YOLO的车辆多维特征识别系统(车色,车品牌,车标,车型)与PYQT实现(课程设计)
基于YOLO的车辆多维特征识别系统(车色,车品牌,车标,车型)与PYQT实现(课程设计) 代码下载地址:下载地址 DEMO get started: PyQt5, 3.3以上的cv2 ,hyperlp ...
- 关于python3与python2同时存在情况下导入pyqt失败解决记录
最近感觉tkinter功能还是比较不适合新手做出高大上的界面,故开始使用pyqt,通过pip安装好了之后,利用qt设计师设计好界面之后,cmd运行之,报错提示没有找到pyqt5模块,IDE运行能正常加 ...
- pyqt designer connect无响应_如何用PyQt编写桌面程序,创建并打开播放列表?
由于电脑上的短视频太多了,并且分别存放在各个子目录下,每次更新后想要整理视频比较麻烦,因此想用Python编写程序来辅助管理视频文件.其实写个Python脚本程序即可实现大器的需求,但为了多练习PyQ ...
- Python培训分享:PyQT是什么?PyQt4和PyQt5的区别是什么?
今天小编为大家介绍的课程是关于Python培训方面的教程,主要讲的是PyQT是什么?PyQt4和PyQt5的区别是什么?来看看下面的详细介绍吧. Python培训分享:PyQT是什么?PyQt4和Py ...
- python 动态编译代码_使用PyQt(Python+Qt)+动态编译36行代码实现的计算器
PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...
- Mac下安装Pyqt
1.安装sip brew install sip 2.安装pyqt brew install pyqt
- PyQt主窗体设置停靠窗口(QDockWidget)的叠加顺序
PyQt提供了方便的停靠窗口控件,我们可以很方便的编写一个停靠窗口,代码和效果如下: # -*- coding: utf-8 -*- from PyQt4 import QtGui, QtCore c ...
- python怎么重启内核_解决jupyter运行pyqt代码内核重启的问题
在jupyter notebook或者是 Qtconsole下编译运行一个简单的pyqt程序,总是报错: The kernel appears to have died. It will restar ...
- python 对话框的创建及调用_Python 使用 PyQt 自定义对话框
作者:ZephyrHou / 欢迎交流学习!!! 在使用 PyQt 进行操作时,内置的窗口往往不能满足我们的需求,所以有时候我们需要自定义一个对话框来满足我们的需要. 1. 在使用前先导入需要用到的库 ...
- pyqt tableview mysql_当数据库中添加了一个新条目时,如何在PyQt中更新TableView?
我正在尝试在PyQt Gui中更新我的TableView,这样每当有新条目添加到QPSQL数据库时,它也会在Gui中的TableView中更新它. 目前,连接工作得很好,可以正确地连接到数据库,并显示 ...
最新文章
- 10 个牛逼的单行代码编程技巧,你会用吗?
- Redis-列表(List)基础
- linux 随机10字符病毒,Linux系统随机10字符病毒的清除
- Ubuntu 16.04安装Docker-Compose 与 Can't connect to docker from docker-compose
- chrome保护眼睛设置【转】
- Stacked Conditional Generative Adversarial Networks for Jointly Learning Shadow Detection and Shadow
- vue项目获取浏览器地址栏参数方法 ?aaa=111bbb=222(非路由传参)
- RxSwift学习(一) --- RxSwift介绍
- 利用点赞功能提升Linkedin账号曝光率和活跃度
- Linux驱动之等待队列
- Java基础学习笔记(二)_Java核心技术(进阶)
- 从事互联网经营就要办理icp许可证吗
- Side Window Filtering 论文笔记
- 小游戏项目及分工情况
- spark shuffle 内幕彻底解密
- 【美萍超市管理系统】汉码盘点机无缝对接 金蝶盘点机条码数据采集器智能终端PDA
- 蓝桥杯成绩公布啦,国赛将至?大一省一选手带你冲刺国赛
- 1996届瑞安市计算机学校,1996届校友
- yum一次性下载安装包及其依赖包
- 出货系统镜像批量安装方案
热门文章
- 已知一个如图所示的训练数据集,其正例点是x1=(3,3),x1=(4,3),负例点是x3=(1,1),试求最大间隔分离超平面。
- iOS 10 is the maximum deployment target for 32-bit targets
- 深入浅出,五次课程,带您进入数据分析的世界
- 超越美日,世界级项目准备起步,基建狂魔是如何管理隧道
- php--如何编写一个简易的论坛
- Nginx+PHP+MySQL分离部署+社区论坛
- 罗杰波、马毅、华刚等谈视觉研究那些事:是时候重新定义视觉了
- 网易考试大题知识盲区之B树、B+树、B*树
- 2016年8月30日 星期二 --出埃及记 Exodus 16:31
- dnf跨5无限连接服务器,DNF:跨5跨6被特殊“服务”,请问:会不会有补偿,制裁怎么解决...