使用pyqt4写GUI小程序时一个clicked信号调用三次槽函数

使用pyqt4写GUI小程序时一个clicked信号调用三次槽函数,第1张

有时我们展示了一个列表, 并想提供查看某项列表的详细内容, 我们会在列表项的末端加一个查看按钮, 这时我们如何在按按钮的时候得知这是那一项呢? 这时就需要带参数的信号, 信号是可以带参数的, 参数会在信号发送时携带, 并传递给接收此信号的槽

from PyQt4 import QtGui, QtCore

class MyButton(QtGui.QPushButton):

myclicked = QtCore.pyqtSignal(int)

def __init__(self, _id, *args, **kwargs):

QtGui.QPushButton.__init__(self, *args, **kwargs)

self._id = _id

self.connect(self, QtCore.SIGNAL("clicked()"), self.emitMyclicked)

def emitMyclicked(self):

self.myclicked.emit(self._id)

app = QtGui.QApplication([])

w = QtGui.QWidget()

w.resize(100, 100)

def showMsg(_id):

QtGui.QMessageBox.information(w, u"信息", u"查看 %d" % _id)

btn = MyButton(1, u"查看1", w)

w.connect(btn, QtCore.SIGNAL("myclicked(int)"), showMsg)

btn2 = MyButton(2, u"查看2", w)

btn2.move(0, 30)

w.connect(btn2, QtCore.SIGNAL("myclicked(int)"), showMsg)

w.show()

app.exec_()

上面例子可以看出, QObject.emit 发送带参数的信号时要携带参数. 当然上面例子也可以用下面方式来写

from PyQt4 import QtGui, QtCore

class MyButton(QtGui.QPushButton):

def __init__(self, _id, *args, **kwargs):

self._id = _id

QtGui.QPushButton.__init__(self, *args, **kwargs)

self.connect(self, QtCore.SIGNAL("clicked()"), self.emitClicked)

def emitClicked(self):

self.emit(QtCore.SIGNAL("myclicked(int)"), self._id)

app = QtGui.QApplication([])

w = QtGui.QWidget()

w.resize(100, 100)

def showMsg(_id):

QtGui.QMessageBox.information(w, u"信息", u"查看 %d" % _id)

btn = MyButton(1, u"查看1", w)

w.connect(btn, QtCore.SIGNAL("myclicked(int)"), showMsg)

btn2 = MyButton(2, u"查看2", w)

btn2.move(0, 30)

w.connect(btn2, QtCore.SIGNAL("myclicked(int)"), showMsg)

w.show()

app.exec_()

主要可以做小程序,爬虫程序,用于系统编程等等还是很广泛的。

Python 的应用领域分为下面几类。下文将介绍一些Python 具体能帮我们做的事情。但我们不会对各个工具进行深入探讨,如果你对这些话题感兴趣,请从老男孩python培训网站或其他一些资源中获取更多的信息。

1.python可以用于系统编程 Python 对 *** 作系统服务的内置接口,使其成为编写可移植的维护 *** 作系统的管理工具和部件(有时也被称为Shell 工具)的理想工具。

Python 程序可以搜索文件和目录树,可以运行其他程序,用进程或线程进行并行处理等等。

2.python可以用于用户图形接口

Python 的简洁以及快速的开发周期十分适合开发GUI 程序。此外,基于C++ 平台的工具包wxPython GUI API 可以使用Python 构建可移植的GUI 。

诸如PythonCard 和Dabo 等一些高级工具包是构建在wxPython 和Tkinter 的基础API 之上的。通过适当的库,你可以使用其他的GUI 工具包,例如,Qt 、GTK 、MFC 和Swing 等。

3.python可以用于Internet 脚本

Python 提供了标准Internet 模块,使Python 能够广泛地在多种网络任务中发挥作用,无论是在服务器端还是在客户端都是如此。

而且网络上还可以获得很多使用Python 进行Internet 编程的第三方工具此外,Python 涌现了许多Web 开发工具包,例如,Django 、TurboGears 、Pylons 、Zope 和WebWare ,使Python 能够快速构建功能完善和高质量的网站。

4.python可以用于组件集成

在介绍Python 作为控制语言时,曾涉及它的组件集成的角色。Python 可以通过C/C++ 系统进行扩展,并能够嵌套C/C++ 系统的特性,使其能够作为一种灵活的粘合语言,脚本化处理其他系统和组件的行为。

例如,将一个C库集成到Python 中,能够利用Python 进行测试并调用库中的其他组件;将Python 嵌入到产品中,在不需要重新编译整个产品或分发源代码的情况下,能够进行产品的单独定制。

5.python能用于数据库编程

对于传统的数据库需求,Python 提供了对所有主流关系数据库系统的接口,Python 定义了一种通过Python 脚本存取SQL 数据库系统的可移植的数据库API ,这个API 对于各种底层应用的数据库系统都是统一的。

所以一个写给自由软件MySQL 系统的脚本在很大程度上不需改变就可以工作在其他系统上(例如,Oracle )-- 你仅需要将底层的厂商接口替换掉就可以实现。

6.python 可以用于快速原型

对于Python 程序来说,使用Python 或C编写的组件看起来都是一样的。正因为如此,我们可以在一开始利用Python 做系统原型,之后再将组件移植到C或C++ 这样的编译语言上。

7.python 可以用于数值计算和科学计算编程

我们之前提到过的NumPy 数值编程扩展包括很多高级工具,通过将Python 与出于速度考虑而使用编译语言编写的数值计算的常规代码进行集成,其他一些数值计算工具为Python 提供了动画、3D 可视化、并行处理等功能的支持。

8.python 可以用于游戏、图像、人工智能、XML 、机器人等

Python 的应用领域很多,远比这里提到的多得多。

例如,可以利用pygame 系统使用Python 对图形和游戏进行编程;用PIL 和其他的一些工具进行图像处理;用PyRo 工具包进行机器人控制编程。

当然python能干的事情不止上面这么多领域,相信你在学完老男孩python自动化架构课程就能知道python应用的领域之多了。

拓展资料

Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)许可。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

7月20日,IEEE发布2017年编程语言排行榜:Python高居首位 。

2018年3月,该语言作者在邮件列表上宣布 Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。

pylupdate的目录: Python\Scripts\pylupdate5.exe

Qt Linguist的目录: Python\Lib\site-packages\pyqt5-tools\linguist.exe

已经在上一节做过了:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7879345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存