python与pyqt5_Python GUI与PyQt5多线程

我试图让我的应用程序支持与GUI相关的多线程,我试图从GUI外部的线程连接到GUI内部的方法,我从Simplest way for PyQT Threading中得到了这个想法,它被标记为工作解决方案,我的错在哪里class Communicate(QtCore.QObject):

myGUI_signal = QtCore.pyqtSignal(str)

def myThread(callbackFunc):

# Setup the signal-slot mechanism.

mySrc = Communicate()

mySrc.myGUI_signal.connect(callbackFunc)

# Endless loop. You typically want the thread

# to run forever.

while(True):

# Do something useful here.

msgForGui = 'This is a message to send to the GUI'

mySrc.myGUI_signal.emit(msgForGui)

FORM_CLASS, _ = loadUiType(os.path.join(os.path.dirname('__file__'), "main.ui"))

class MainApp(QMainWindow, FORM_CLASS): # QMainWindow refere to window type used in ui file

# this is constructor

def __init__(self, parent=None):

super(MainApp, self).__init__(parent)

QMainWindow.__init__(self)

self.setupUi(self)

self.ui()

self.actions()

def ui(self):

self.setFixedSize(848, 663)

def actions(self):

self.pushButton.clicked.connect(self.startTheThread)

def theCallbackFunc(self, msg):

print('the thread has sent this message to the GUI:')

print(msg)

print('---------')

def startTheThread(self):

# Create the new thread. The target function is 'myThread'. The

# function we created in the beginning.

t = threading.Thread(name = 'myThread', target = myThread, args =(self.theCallbackFunc))

t.start()

def main():

app = QApplication(sys.argv)

window = MainApp() # calling class of main window (first window)

window.show() # to show window

app.exec_() # infinit loop to make continous show for window

if __name__ == '__main__':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值