2
我想在屏幕上畫一個簡單的形狀,我已經選擇PyQt的作爲包裝使用,因爲它似乎是最成熟的。我不以任何方式鎖定它。
問題
這似乎是過於複雜,只是畫一個簡單的形狀,例如像在屏幕上的多邊形。我發現所有的例子都試圖做很多額外的事情,我不確定實際上相關的是什麼。
問題
什麼是PyQt的絕對最小的方式在屏幕上繪製多邊形?
我使用PyQt的版本5和Python的版本3,如果它有任何區別的話。
我想在屏幕上畫一個簡單的形狀,我已經選擇PyQt的作爲包裝使用,因爲它似乎是最成熟的。我不以任何方式鎖定它。
問題
這似乎是過於複雜,只是畫一個簡單的形狀,例如像在屏幕上的多邊形。我發現所有的例子都試圖做很多額外的事情,我不確定實際上相關的是什麼。
問題
什麼是PyQt的絕對最小的方式在屏幕上繪製多邊形?
我使用PyQt的版本5和Python的版本3,如果它有任何區別的話。
我不知道,你跟
的意思在屏幕上
可以使用QPainter的,畫了很多形狀上的QPaintDevice例如任何子類QWidget和所有的子類。
最低限度是設置筆和文本的筆和填充筆。然後創建一個多邊形,設置多邊形和油漆的所有點在paintEvent()
:
import sys, math
from PyQt5 import QtCore, QtGui, QtWidgets
class MyWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.pen = QtGui.QPen(QtGui.QColor(0,0,0)) # set lineColor
self.pen.setWidth(3) # set lineWidth
self.brush = QtGui.QBrush(QtGui.QColor(255,255,255,255)) # set fillColor
self.polygon = self.createPoly(8,150,0) # polygon with n points, radius, angle of the first point
def createPoly(self, n, r, s):
polygon = QtGui.QPolygonF()
w = 360/n # angle per step
for i in range(n): # add the points of polygon
t = w*i + s
x = r*math.cos(math.radians(t))
y = r*math.sin(math.radians(t))
polygon.append(QtCore.QPointF(self.width()/2 +x, self.height()/2 + y))
return polygon
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.setPen(self.pen)
painter.setBrush(self.brush)
painter.drawPolygon(self.polygon)
app = QtWidgets.QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
[圖形視圖框架(http://doc.qt.io/qt-5/graphicsview.html)。 – ekhumoro