我正在努力理解QSignalMapper。我了解了如何用处理str的插槽来映射按钮单击。我试图映射一个QObject来做同样的事情,但是它一直在失败。我是做错了什么还是错过了什么?
class TObject(QObject):
def __init__(self):
super().__init__(None)
class Widget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setLayout(QVBoxLayout())
fruit_list = ["apples", "oranges", "pears"]
sigMapper = QSignalMapper(self)
sigMapper.mapped[str].connect(self.SLOTSTR) # type:ingore
sigMapper.mapped[TObject].connect(self.SLOTOBJECT) # type:ingore
for i, fruit in enumerate(fruit_list):
btn = QPushButton(fruit)
btn.clicked.connect(sigMapper.map)
sigMapper.setMapping(btn, TObject() if i == 0 else str(fruit))
self.layout().addWidget(btn)
def SLOTSTR(self, s: str):
print("SLOTSTR", s)
def SLOTOBJECT(self):
print("SLOTOBJECT")发布于 2022-05-26 03:45:05
我刚刚发现了错误。
sigMapper.setMapping(btn, TObject() if i == 0 else str(fruit))至
sigMapper.setMapping(btn, TObject(self) if i == 0 else str(fruit))https://stackoverflow.com/questions/72386366
复制相似问题