在PyQt中的QThreads中通过pyqtsignal获取发射值

时间:2017-10-19 22:19:41

标签: python pyqt qthread qt-signals

我试图在不使用函数的情况下获取Class Qthread的信号发出的值

当用户选择退出并按下GUI上的[ X ]按钮时,我正在呼叫警告框,所以我通过线程调用此警报框以确保我的GUI不会冻结。

以下是代码:

class ABC:
    def __init__(self):
             self.close = CloseThread() # Creating instance of QThread Class
........
........
........
    def closeEvent(self, event):
    button = self.close.CloseResult 
    self.close.start()
    if button == 1:
        event.accept()
    else:
        event.ignore()

class CloseThread(QThread):
"""Threading class which is emitting the return value according to the choice 
   of the user(When the message appears, if the user chooses 
   'Ok' then return value is 1 and if the user chooses
   'Cancel'return value is 2)"""
CloseResult = QtCore.pyqtSignal(object)

def __init__(self):
    QThread.__init__(self)

def close(self):
    button = win32api.MessageBox(0, 'Do you want to Exit?', 'Message')
    self.CloseResult.emit(button)

def run(self):
    self.close()

我知道我可以通过self.close.CloseResult.connect(self.fn_name)而不是使用self.close.CloseResult来获取发出的值,但我不想调用另一个函数,因为这里我扩展了closeEvent函数的范围所以我不想调用另一个函数。(实际上通过调用另一个函数,事情并没有按照预期的那样运行)

  

注意:使用self.close.CLoseResult我正在获取一个对象,那么有没有办法访问此对象的值?

那么有什么方法可以在变量中获取值而不必调用任何其他函数?

0 个答案:

没有答案