a_duck 2022-02-04 21:32 采纳率: 0%
浏览 25

PyQt5 程序无法结束

想用pyqt5弄一个显示图片的程序,可窗口显示过后程序还是在运行,没有退出
(是不是多线程的问题,导致有些线程没结束

import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
from PyQt5.QtGui import QPixmap,QIcon
from time import sleep
from threading import Thread
from configparser import ConfigParser
a = ConfigParser()
a.read("config.cfg")
dx = a.getint("d","dx")
dy = a.getint("d","dx")

class Window(QWidget):
    def __init__(self,p):
        super().__init__()
        self.initUI()
        thread = Thread(target=self.showpic,args=[p])
        thread.setDaemon(True)
        thread.start()
        print(1111)
    def initUI(self):
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint|QtCore.Qt.SubWindow|QtCore.Qt.WindowStaysOnTopHint)
        self.setAutoFillBackground(False)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
        self.repaint()

        self.setGeometry(dx,dy,3840,2160)

        self.lab = QLabel()
        vbox = QVBoxLayout()
        vbox.addWidget(self.lab)
        self.setLayout(vbox)
        self.show()
        print(1919)
    def showpic(self,p):
        for i in p:
            self.lab.setPixmap(QPixmap(i[0]))
            sleep(i[1])
        self.close()
        sys.exit()
        print(114514)

def show(pic):
    app = QApplication(sys.argv)
    ex = Window(pic)
    print(8)
    app.exec_()
    print(9)

show([["./pic/show/1.png",0.25],["./pic/show/2.png",0.25],["./pic/show/3.png",0.25],["./pic/show/4.png",0.25]])

  • 写回答

1条回答 默认 最新

  • youcans_ 人工智能领域优质创作者 2022-02-05 08:42
    关注

    你这个程序写的,怎么说呢,有些 非主流。

    其中关于多线程肯定是有问题的,但可能还不仅是多线程的问题。

    你可以先把涉及多线程的这几句注释掉,看看其它部分能否正常运行——我估计也有问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月4日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器