• 3372阅读
  • 0回复

问一个信号槽的问题 [复制链接]

上一主题 下一主题
离线weakness_kh
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-27
用的pyQT4去做的。后台线程大概:
class Back(QtCore.QObject):
    self.flag = False
    ...
    def stoplisten(self):
        self.flag = True

    def startlisten(self):
        while True:
            if self.flag:
                #socket.close()
                self.flag = False
                return
            else:
                ...
我在图形线程中新建立了个线程
self.t = QtCore.QThread()
self.back = Back()
self.back.moveToThread(self.t)
self.connect(self, QtCore.SIGNAL("startall()"), self.back.startlisten)
self.connect(self, QtCore.SIGNAL("stopall()"), self.back.stoplisten)
self.t.start()

通过两个按钮分别发射startall和stopall信号,现在问题出来了

本意是想通过flag的改变让后台线程在必要时刻退出循环。我记得以前做的程序也是这样搞得

但是现在只要通过startall()启动了startlisten槽之后,即使while是个空循环,在其运行的过程中,线程t就再也无法接受我主线程发出的信号了

把while循环去掉后,经测试便可正常接受start和stop信号。请问这是为什么?
快速回复
限100 字节
 
上一个 下一个