在PyQt4应用程序中,我根据用户操作将滑块连接到一个或另一个插槽。我更改插槽分配以响应按钮点击。几个不同的插槽做了不同的事情,太不同了,无法通过一些“if”语句合并到一个插槽中。
此应用经常崩溃。我想知道是否犹豫是否像这样将飞机重新分配给一个信号。这会导致PyQt4内部的悬空指针,内存损坏还是其他不好的东西?如果我正在做的事情没问题,我会在别处寻找这个错误。
这是我的应用程序的非常草图版本:
def MyThing(QWidget):
(in some approprate place)
self.s = QSlider()
def MethodOne(self): # this is a slot handling a button click
self.s.valueChanged.connect(self.someslot1)
def MethodTwo(self): # likewise
self.s.valueChanged.connect(self.someslot2)
def someslot1(self, svalue): # slider movement handler
(compute, show info based on slider position)
def someslot2(self, svalue): # similar to someslot1
....
答案 0 :(得分:1)
如果在调用connect时仍然存在2个连接对象,则不应导致崩溃。
根据您的代码,您似乎没有断开先前连接的插槽(例如,使用self.s.valueChanged.disconnect()
),这可能导致每个信号多次调用两个插槽,这意味着您的应用程序可能会随着时间的推移而变慢,并且可能会崩溃,具体取决于您在插槽中的操作。