栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用新语法将自定义信号连接到pyside中的插槽?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用新语法将自定义信号连接到pyside中的插槽?

您必须在实现或继承的类中声明新信号;

class ZeroSpinBox (QSpinBox):    atzero = Signal(int)    .    .

然后,您可以使用新型信号来调用它。用于发射信号;

        self.emit(SIGNAL("atzero(int)"), self.zeros)

改成

        self.atzero.emit(self.zeros)

用于连接信号;

         self.connect(zerospinbox, SIGNAL("atzero(int)"), self.announce)

改成

         zerospinbox.atzero.connect(self.announce)

您也可以阅读本文档以了解更多信息。


实施代码示例(PyQt4也与PySide相同,不同的是名称

Signal
pyqtSignal
);

import sysfrom PyQt4.QtCore import *from PyQt4.QtGui import *class ZeroSpinBox(QSpinBox):    atzero = pyqtSignal(int)    zeros = 0    def __init__(self):        super(ZeroSpinBox, self).__init__()        self.valueChanged.connect(self.checkzero)    def checkzero(self):        if self.value() == 0: self.zeros += 1#  self.emit(SIGNAL("atzero(int)"), self.zeros) self.atzero.emit(self.zeros)class Form(QDialog):    def __init__(self):        super(Form, self).__init__()        dial = QDial()        dial.setNotchesVisible(True)        zerospinbox = ZeroSpinBox()        layout = QHBoxLayout()        layout.addWidget(dial)        layout.addWidget(zerospinbox)        self.setLayout(layout)        dial.valueChanged.connect(zerospinbox.setValue)        zerospinbox.valueChanged.connect(dial.setValue)        zerospinbox.atzero.connect(self.announce)#         self.connect(zerospinbox, SIGNAL("atzero(int)"), self.announce)        self.setWindowTitle("Signals")    def announce(self, zeros):        print("zerospinbox has been at zero " + str(zeros) + " times.")app = QApplication(sys.argv)form = Form()form.show()app.exec_()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号