python - PYQT5画线
问题描述
def __init__(self):
super().__init__()
self.title = 'Main menu'
self.left = 80
self.top = 80
self.width = 1500
self.height = 1000
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
painter = QPainter(self)
painter.setBrush(Qt.black)
painter.setPen(QPen(Qt.black, 2, Qt.SolidLine))
painter.drawLine(200,200,400,400)
self.show()
我试图画一条直线,但它什么也没画。我怎么画它?
解决方案
无效 QWidget::paintEvent(QPaintEvent *event)
此事件处理程序可以在子类中重新实现,以接收事件中传递的绘制事件。
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Widget(QWidget):
def __init__(self):
super().__init__()
def paintEvent(self, event):
painter = QPainter(self)
painter.setPen(Qt.red)
painter.drawLine(10,10,100,140)
painter.setPen(Qt.blue)
painter.drawRect(120,10,80,80)
rectf = QRectF(230.0,10.0,80.0,80.0)
painter.drawRoundedRect(rectf,20,20)
p1 = [QPoint(10,100),QPoint(220,110),QPoint(220,190)]
painter.drawPolyline(QPolygon(p1))
p2 = [QPoint(120,110),QPoint(220,110),QPoint(220,190)]
painter.drawPolygon(QPolygon(p2))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Widget()
ex.resize(400, 280)
ex.show()
sys.exit(app.exec_())
推荐阅读
- c - Operations with pointers in linked lists
- sql-server - 具有动态 SQL 和 ORDER BY 的存储过程
- objective-c - Cannot invoke 'schema' with an argument list of type '(String)'
- docker - 套接字异常:对等方重置连接
- javascript - How to negate and atribute a function to a variable in javascript?
- saxon - java -jar saxon9he.jar person.xml person_users.xslt -o:persons_transformed.txt
- python - 如何在python中清除或覆盖错误的用户输入
- javascript - Find the key in an object which contains a particular value in an array
- sql - oracle 10g中listagg的替代品
- php - sentry-sentry-symfony won't install on Symfony 2.8 due to symfony/http-kernel dependency