
import unit ##这里主要用到了unit 模块的afk方法 afk=threading.Thread() class mainwindow(QMainWindow): def __init__(self,*args,**kwargs): super().__init__(*args,**kwargs) self.initUI() def initUI(self): fOnt= QFont() font.setFamily("Arial") font.setPointSize(12) #创建按钮 self.gccbtn=QPushButton('启动线程A',self) self.gccbtn.setFont(font) self.gccbtn.resize(self.gccbtn.sizeHint()) self.gccbtn.clicked[bool].connect(self.gcc_clicked) #将按钮添加到布局中 vlayout=QVBoxLayout() vlayout.addWidget(self.gccbtn) vlayout.addStretch(1) #添加布局至窗口 widget=QWidget() widget.setLayout(vlayout) self.setCentralWidget(widget) #初始化窗口信息 self.setWindowTitle('window') self.setWindowIcon(QIcon('icon.png')) self.setGeometry(300, 300, 220, 120) self.show() def gcc_clicked(self,pressed): global afk afk=threading.Thread(target=unit.afk) afk.setDaemon(True) afk.start() print('开启线程') if __name__ == "__main__": app=QApplication(sys.argv) window=mainwindow() sys.exit(app.exec_()) 1 laminux29 2020-10-11 23:31:29 +08:00 第一次玩界面编程,特别是有界面线程 + 新开线程, 建议先用 Visio 画画流程图,很多问题你自己画画图都能解决。 解决不了的话,你把图发出来。 |
2 ysc3839 2020-10-12 00:09:59 +08:00 不清晰,请发代码,没有具体代码没法判断是什么问题。 |
3 chiyeung524 OP @ysc3839 已补充,谢谢帮忙看一下 |
4 chiyeung524 OP @laminux29 我自己看了一下,逻辑很简单,但就是会线程卡死,不知道问题出在哪~ |
5 ysc3839 2020-10-12 00:39:14 +08:00 @chiyeung524 并没有 unit.afk 的代码。 |
6 chiyeung524 OP @ysc3839 那一串太长了,不好发。而且这里头不会牵涉到线程内容,只是会有比较多的循环文件 IO,单独运行这个方法是没问题的,单独作为线程去 start 也没问题,就是加入到按钮的事件响应后,运行了一小部分就会卡死崩溃。 |
7 chiyeung524 OP @ysc3839 if __name__ == "__main__": afk=threading.Thread(target=unit.afk) afk.setDaemon(True) afk.start() afk.join() print('bye') 就是说,这样运行是没问题的。 |
8 ysc3839 2020-10-12 00:53:28 +08:00 via Android |