MSDN_tang 2018-04-10 16:31 采纳率: 100%
浏览 1076
已采纳

请教一些关于pyqt5的小白问题

如下代码所示,我想在一个Dialog的Qwidget里绘制一个矩形,但在发送信号调用DrawRec的时候并没有绘制出图形,但是把DrawRec放在paintEvent里就能绘制出来,难道Qwidget只能在paintEvent里绘制图形?还是因为我没能正确调用呢?

 import sys
from PyQt5.QtCore import pyqtSlot, pyqtSignal
from PyQt5.QtWidgets import QApplication, QDialog,QWidget, QVBoxLayout
from PyQt5.QtGui import QPainter, QColor, QBrush, QPen, QPalette


class myWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.setBackgroundRole(QPalette.Midlight)
        self.setAutoFillBackground(True)

    def paintEvent(self, e):
        # self.DrawRec(10, 10, 50, 50)
        pass

    @pyqtSlot(int, int, int, int)       # 定义槽函数
    def DrawRec(self, x1, y1, x2, y2):
        qp = QPainter()
        qp.begin(self)
        col = QColor(0, 0, 0)
        col.setNamedColor('#d4d4d4')
        qp.setPen(col)
        qp.setBrush(QColor(200, 0, 0))
        qp.drawRect(x1, y1, x2, y2)
        qp.end()


class Dialog(QDialog):

    _signal = pyqtSignal(int, int, int, int)    # 定义信号

    def __init__(self, parent=None):

        super(Dialog, self).__init__(parent)
        self.setObjectName("Dialog")
        self.resize(400, 300)
        self.setSizeGripEnabled(True)

        wigglyWidget = myWidget()
        layout = QVBoxLayout()
        layout.addWidget(wigglyWidget)
        self.setLayout(layout)


        self._signal.connect(wigglyWidget.DrawRec)      # connect
        self._signal.emit(20, 20, 50, 50)        # 信号发送


if __name__ == "__main__":
    app = QApplication(sys.argv)
    dlg = Dialog()
    dlg.show()
    sys.exit(app.exec_())
  • 写回答

1条回答 默认 最新

  • guyanju 2018-04-11 09:28
    关注

    虽然没用过pyqt5,但代码都是通的,画图当然要在paintevent中处理了。写在构造函数中显然是不行的。

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

报告相同问题?

悬赏问题

  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?