python信号与槽_类之间的Python信号和槽

本文介绍了PyQt4中信号与槽的概念,通过一个具体的例子展示了如何在类之间建立信号和槽的连接,以实现组件间的通信。在示例中,`MainWindow`类连接了`SliderDialog`类的`sliderUpdate`信号,当滑块移动时触发`scalers`方法。修复了`connect`方法的参数错误,确保了信号和槽的正确连接。
摘要由CSDN通过智能技术生成

问题是你的put参数“connect”错误bool QObject.connect (QObject, SIGNAL(), callable, Qt.ConnectionType = Qt.AutoConnection)

参数:

^{pr2}$

要解决这些问题,请在正确的位置更改正确的参数。在

^{3}$

收件人:self.connect(sdlg, QtCore.SIGNAL('sliderUpdate'), self.scalers)

上次编辑时间:2014年8月18日11:37:添加完整代码from PyQt4 import QtCore

from PyQt4 import QtGui

OFFSET_Y = 15

OFFSET_X = 5

SPACER_Y = 20

SPACER_X = 50

switch = [1.0, 2.0, 3.0, 6.0, 9.0, 12.0, 18.0]

class MainWindow(QtGui.QMainWindow):

sliderUpdate = QtCore.SIGNAL('sliderUpdate()')

def __init__(self):

super(MainWindow, self).__init__()

sdlg = SliderDialog(self, 5)

self.connect(sdlg, QtCore.SIGNAL('sliderUpdate'), self.scalers)

sdlg.show()

def scalers(self) :

print "In scalers of MainWindow!"

class SliderDialog(QtGui.QDialog) :

sliderMoved = QtCore.pyqtSignal()

def __init__( self, parent, dataCount ) :

super(SliderDialog, self).__init__(parent)

sliderLayout = QtGui.QVBoxLayout()

sliderLayout.addStretch()

self.slider = []

self.sliderLabel = []

for i in range(dataCount) :

s = QtGui.QSlider(QtCore.Qt.Horizontal, self)

s.setMinimum(0)

s.setMaximum(len(switch)-1)

s.setTickInterval(1)

s.setSingleStep(1)

s.move(170, OFFSET_Y+30 + 3*SPACER_Y*i)

s.sliderReleased.connect(self.sliderMoved)

sl = QtGui.QLabel("Scaling to : 1.0", self)

sl.move(5, OFFSET_Y+30 + 3*SPACER_Y*i)

self.slider.append(s)

self.sliderLabel.append(sl)

sliderLayout.addWidget(self.slider[i])

sliderLayout.addWidget(self.sliderLabel[i])

def sliderMoved(self) :

for i, slides in enumerate(self.slider) :

scaler = slides.sliderPosition()

self.sliderLabel[i].setText("Scaling to: {}".format(switch[scaler]))

self.emit(QtCore.SIGNAL('sliderUpdate'))

if __name__ == '__main__':

import sys

app = QtGui.QApplication(sys.argv)

window = MainWindow()

window.show()

sys.exit(app.exec_())

谨致问候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值