Pyqt5在使用QPainter 进行绘制时无法绘制成功

学习pyqt5时想要使用QPainter画一段圆弧,但是在编译无错误、能启动运行的情况下,只出现一个空的窗口,且窗口在出现一段时间以后便自动退出

import sys,math
import Infrared_Thermal
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt

class IMainWindow(QMainWindow):
    def __init__(self):
        super(IMainWindow, self).__init__()

    def paintEvent(self, e):
        pt = QPainter()
        pt.begin()
        pt.setPen(QT.blue)
        rect=QRect(0,10,100,100)
        pt.drawArc(rect,30,60)
        pt.end()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = IMainWindow()
    ui = Infrared_Thermal.Ui_MainWindow()
    ui.setupUi(w)
    w.show()
    sys.exit(app.exec_())


补一个Infrared_Thermal.py的代码(Qt designer生成的ui)

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1179, 755)
        MainWindow.setStyleSheet("background-color: rgb(131, 255, 224);")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.Frame_BtnBar = QtWidgets.QFrame(self.centralwidget)
        self.Frame_BtnBar.setGeometry(QtCore.QRect(30, 70, 231, 591))
        self.Frame_BtnBar.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"border-radius:25px")
        self.Frame_BtnBar.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.Frame_BtnBar.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Frame_BtnBar.setObjectName("Frame_BtnBar")
        self.Button_ShotBegin = QtWidgets.QPushButton(self.Frame_BtnBar)
        self.Button_ShotBegin.setGeometry(QtCore.QRect(10, 230, 201, 28))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.Button_ShotBegin.setFont(font)
        self.Button_ShotBegin.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);\n"
"border-radius:5px\n"
"")
        self.Button_ShotBegin.setObjectName("Button_ShotBegin")
        self.Button_ShotStop = QtWidgets.QPushButton(self.Frame_BtnBar)
        self.Button_ShotStop.setGeometry(QtCore.QRect(10, 270, 201, 28))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.Button_ShotStop.setFont(font)
        self.Button_ShotStop.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);\n"
"border-radius:5px\n"
"")
        self.Button_ShotStop.setObjectName("Button_ShotStop")
        self.Button_Settings = QtWidgets.QPushButton(self.Frame_BtnBar)
        self.Button_Settings.setGeometry(QtCore.QRect(10, 360, 201, 28))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.Button_Settings.setFont(font)
        self.Button_Settings.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);\n"
"border-radius:5px\n"
"")
        self.Button_Settings.setObjectName("Button_Settings")
        self.Button_HeatUp = QtWidgets.QPushButton(self.Frame_BtnBar)
        self.Button_HeatUp.setGeometry(QtCore.QRect(10, 160, 201, 28))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.Button_HeatUp.setFont(font)
        self.Button_HeatUp.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);\n"
"border-radius:5px\n"
"")
        self.Button_HeatUp.setObjectName("Button_HeatUp")
        self.Button_Quit = QtWidgets.QPushButton(self.Frame_BtnBar)
        self.Button_Quit.setGeometry(QtCore.QRect(10, 400, 201, 28))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.Button_Quit.setFont(font)
        self.Button_Quit.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);\n"
"border-radius:5px\n"
"")
        self.Button_Quit.setObjectName("Button_Quit")
        self.label_2 = QtWidgets.QLabel(self.Frame_BtnBar)
        self.label_2.setGeometry(QtCore.QRect(70, 50, 101, 51))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(22)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.line = QtWidgets.QFrame(self.Frame_BtnBar)
        self.line.setGeometry(QtCore.QRect(50, 110, 118, 3))
        self.line.setStyleSheet("background-color: rgb(69, 195, 174);")
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.ListView_BGContainer = QtWidgets.QListView(self.centralwidget)
        self.ListView_BGContainer.setGeometry(QtCore.QRect(-80, -70, 1281, 961))
        self.ListView_BGContainer.setStyleSheet("background-image: url(:/png/back_ground.jpg);")
        self.ListView_BGContainer.setObjectName("ListView_BGContainer")
        self.Frame_VideoFrame = QtWidgets.QFrame(self.centralwidget)
        self.Frame_VideoFrame.setGeometry(QtCore.QRect(280, 70, 861, 591))
        self.Frame_VideoFrame.setStyleSheet("\n"
"background-color: rgb(205, 255, 241);\n"
"border-radius:25px")
        self.Frame_VideoFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.Frame_VideoFrame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Frame_VideoFrame.setObjectName("Frame_VideoFrame")
        self.Frame_VideoCtrlBar = QtWidgets.QFrame(self.Frame_VideoFrame)
        self.Frame_VideoCtrlBar.setGeometry(QtCore.QRect(0, 500, 861, 91))
        self.Frame_VideoCtrlBar.setStyleSheet("\n"
"background-color: rgb(64, 225, 199);")
        self.Frame_VideoCtrlBar.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.Frame_VideoCtrlBar.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Frame_VideoCtrlBar.setObjectName("Frame_VideoCtrlBar")
        self.Button_Play = QtWidgets.QPushButton(self.Frame_VideoCtrlBar)
        self.Button_Play.setGeometry(QtCore.QRect(60, 10, 70, 70))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setBold(True)
        font.setWeight(75)
        self.Button_Play.setFont(font)
        self.Button_Play.setStyleSheet("QPushButton\n"
"{\n"
"background-color: rgb(93, 255, 215);\n"
"border-radius:35px;\n"
"border:2px groove gray;\n"
"border-style:outset\n"
"}\n"
"")
        self.Button_Play.setObjectName("Button_Play")
        self.Button_Pause = QtWidgets.QPushButton(self.Frame_VideoCtrlBar)
        self.Button_Pause.setGeometry(QtCore.QRect(140, 10, 70, 70))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setBold(True)
        font.setWeight(75)
        self.Button_Pause.setFont(font)
        self.Button_Pause.setStyleSheet("QPushButton\n"
"{\n"
"background-color: rgb(93, 255, 215);\n"
"border-radius:35px;\n"
"border:2px groove gray;\n"
"border-style:outset\n"
"}\n"
"")
        self.Button_Pause.setObjectName("Button_Pause")
        self.Frame_VideoInfo = QtWidgets.QFrame(self.Frame_VideoCtrlBar)
        self.Frame_VideoInfo.setGeometry(QtCore.QRect(440, 10, 351, 71))
        self.Frame_VideoInfo.setStyleSheet("background-color: rgb(96, 102, 191);")
        self.Frame_VideoInfo.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.Frame_VideoInfo.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Frame_VideoInfo.setObjectName("Frame_VideoInfo")
        self.Button_Save = QtWidgets.QPushButton(self.Frame_VideoCtrlBar)
        self.Button_Save.setGeometry(QtCore.QRect(220, 10, 70, 70))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setBold(True)
        font.setWeight(75)
        self.Button_Save.setFont(font)
        self.Button_Save.setStyleSheet("QPushButton\n"
"{\n"
"background-color: rgb(93, 255, 215);\n"
"border-radius:35px;\n"
"border:2px groove gray;\n"
"border-style:outset\n"
"}\n"
"")
        self.Button_Save.setObjectName("Button_Save")
        self.Lable_VideoTitle = QtWidgets.QLabel(self.Frame_VideoFrame)
        self.Lable_VideoTitle.setGeometry(QtCore.QRect(30, 20, 201, 41))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(18)
        font.setBold(True)
        font.setWeight(75)
        self.Lable_VideoTitle.setFont(font)
        self.Lable_VideoTitle.setObjectName("Lable_VideoTitle")
        self.ListView_BGContainer.raise_()
        self.Frame_BtnBar.raise_()
        self.Frame_VideoFrame.raise_()
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.Button_ShotBegin.setText(_translate("MainWindow", "开始录制"))
        self.Button_ShotStop.setText(_translate("MainWindow", "停止录制"))
        self.Button_Settings.setText(_translate("MainWindow", "设置"))
        self.Button_HeatUp.setText(_translate("MainWindow", "开始加热"))
        self.Button_Quit.setText(_translate("MainWindow", "退出"))
        self.label_2.setText(_translate("MainWindow", "操作"))
        self.Button_Play.setText(_translate("MainWindow", "播放"))
        self.Button_Pause.setText(_translate("MainWindow", "暂停"))
        self.Button_Save.setText(_translate("MainWindow", "保存"))
        self.Lable_VideoTitle.setText(_translate("MainWindow", "温度分布显示"))
import img_rc

运行的结果

img

想问一下到底是为什么呢,怎么样才能实现正常的绘制呢

用debug可以测试程序的异常,你的代码缺了Infrared_Thermal部分,这里无法帮你调试