【发布时间】:2015-07-17 16:37:35
【问题描述】:
我是 PySide 的新手,我正在尝试发出一个信号并从另一个类接收它。
我在 MySignal 类的对象上使用了 emit,并且信号是从 MyRadioButton 类发出的。发射和连接都返回 True 但正如我所愿,更新方法没有被调用
这是文件和代码的基本结构。
# MySignals.py
from PySide.QtCore import QObject, Signal
class MyCheckedSignal(QObject):
signal = Signal(str)
# MyRadioButton.py
class MyRadioButton(QWidget, QObject):
def __init__(self, value=None, label=None):
QWidget.__init__(self)
self.__value = value
self.__checked = False
self.checkSignal = MySignals.MyCheckedSignal()
def toggleCheck(self):
if self.__checked == False:
self.__checked = True
self.checkSignal.emit(SIGNAL(self.__value))
else:
self.__checked = False
# MyRadioGroup.py
class MyRadioGroup(QObject):
def __init__(self, radioes=None):
QObject.__init__(self)
for radio in radioes:
# radio is of type MyRadio
# self.connect(radio, SIGNAL("checked()"), self.update)
radio.checkSignal.signal.connect(self.update)
# self.connect(self.update)
def update(self, value):
print("Checked", value)
【问题讨论】:
-
这是真实的代码吗?它看起来很奇怪。为了发出信号,
self.__value必须是"signal(QString)"。此外,信号必须只发送一个字符串参数,否则会引发TypeError。所以如果你说connect和emit都返回True,那么你发布的代码并不能准确地代表你的真实代码。