m0_51507696 2022-04-01 07:13 采纳率: 100%
浏览 21
已结题

请问在PTQT5中,为何在我定义的类中没有被调用的方法会被执行?(附上简洁代码)

请问在PTQT5中,为何在我定义的类中没有被调用的方法会被执行?(附上简洁代码如下)

from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt
import sys
class xample(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setGeometry(300, 300, 280, 270)
        self.setWindowTitle('Pen styles')
        self.show()
    def paintEvent(self, e):#这个参数e不知道什么用,但是必须有
        qp = QPainter()#创建一个绘图对象的实例
        qp.begin(self)#开始绘图
        self.drawLines(qp)#调用我编写的绘图方法
        qp.end()#结束绘图
    def drawLines(self, qp):
        pen = QPen(Qt.black, 2, Qt.SolidLine) # 先设置笔的样式
        qp.setPen(pen) # 有种插上笔芯的感觉
        qp.drawLine(20, 40, 250, 40) # 前两个坐标起点 后两个坐标终点
        pen.setStyle(Qt.DashLine)
        qp.setPen(pen)
        qp.drawLine(20, 80, 250, 80)
        pen.setStyle(Qt.DashDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 120, 250, 120)
        pen.setStyle(Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(20, 160, 250, 160)
        pen.setStyle(Qt.DashDotDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 200, 250, 200)
        pen.setStyle(Qt.CustomDashLine)
        pen.setDashPattern([1, 4, 5, 4])
        qp.setPen(pen)
        qp.drawLine(20, 240, 250, 240)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = xample()
    sys.exit(app.exec_())



以上代码执行的功能是绘制几条不同风格的线

我目前没有思路。

请问为什么在我定义的这个类中的paintEvent方法未调用时,仍然可以绘图?

  • 写回答

1条回答 默认 最新

  • 於黾 2022-04-01 10:34
    关注

    因为你继承了QWidget
    而paintEvent是重写了父类的方法
    在窗体需要绘制时,这个方法就会被调用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月9日
  • 已采纳回答 4月1日
  • 修改了问题 4月1日
  • 修改了问题 4月1日
  • 展开全部

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测