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
|