python pyqt怎么画圆

作者&投稿:刀梁 (若有异议请与网页底部的电邮联系)
Python 如何调用graphics库画圆弧,半圆等~

import turtleturtle.left(135)turtle.circle(120,90)turtle.done()
pythone3

circle(100,-360)箭头是向后的,看着不习惯
circle(-100,360)更好,箭头是向前的

这个例子我做了好几天:

1)官网C++的源码,改写成PyQt5版本的代码,好多细节不会转化

2)网上的PyQt的例子根本运行不了

填了无数个坑,结合二者,终于能完成了一个关于绘图的东西。这个过程也掌握了很多新的知识点

【知识点】

1、关于多个点的使用

poitns = [QPoint(10, 80), QPoint(20, 10), QPoint(80, 30), QPoint(90, 70)]

请看:

1      # 定义多个点 2      points = [QPoint(10, 80), QPoint(20, 10), QPoint(80, 30), QPoint(90, 70)] 3  4      # ===直接使用 points 会报错!========= 5      # ... 6      elif self.shape == self.Points: 7            painter.drawPoints(points) 8  9      elif self.shape == self.Polyline:10            painter.drawPolyline(points)11 12      elif self.shape == self.Polygon:13            painter.drawPolygon(points, 4)14 15      # ...16 17      # ===把 points 用 QPolygon()包裹起来才正确!=========18      # ...19      elif self.shape == self.Points:20            painter.drawPoints(QPolygon(points))21 22      elif self.shape == self.Polyline:23            painter.drawPolyline(QPolygon(points))24 25      elif self.shape == self.Polygon:26            painter.drawPolygon(QPolygon(points), 4)27 28      # ...

2、在QDialog窗体中显示QWidget部件

【效果图】

【资源】

【代码】

import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *class StockDialog(QWidget):    def __init__(self, parent=None):
super(StockDialog, self).__init__(parent)
self.setWindowTitle("利用QPainter绘制各种图形")

mainSplitter = QSplitter(Qt.Horizontal)
mainSplitter.setOpaqueResize(True)

frame = QFrame(mainSplitter)
mainLayout = QGridLayout(frame)        #mainLayout.setMargin(10)
mainLayout.setSpacing(6)

label1=QLabel("形状:")
label2=QLabel("画笔线宽:")
label3=QLabel("画笔颜色:")
label4=QLabel("画笔风格:")
label5=QLabel("画笔顶端:")
label6=QLabel("画笔连接点:")
label7=QLabel("画刷风格:")
label8=QLabel("画刷颜色:")

self.shapeComboBox = QComboBox()
self.shapeComboBox.addItem("Line", "Line")
self.shapeComboBox.addItem("Rectangle", "Rectangle")
self.shapeComboBox.addItem('Rounded Rectangle','Rounded Rectangle')
self.shapeComboBox.addItem('Ellipse','Ellipse')
self.shapeComboBox.addItem('Pie','Pie')
self.shapeComboBox.addItem('Chord','Chord')
self.shapeComboBox.addItem('Path','Path')
self.shapeComboBox.addItem('Polygon','Polygon')
self.shapeComboBox.addItem('Polyline','Polyline')
self.shapeComboBox.addItem('Arc','Arc')
self.shapeComboBox.addItem('Points','Points')
self.shapeComboBox.addItem('Text','Text')
self.shapeComboBox.addItem('Pixmap','Pixmap')

self.widthSpinBox = QSpinBox()
self.widthSpinBox.setRange(0,20)

self.penColorFrame = QFrame()
self.penColorFrame.setAutoFillBackground(True)
self.penColorFrame.setPalette(QPalette(Qt.blue))
self.penColorPushButton = QPushButton("更改")

self.penStyleComboBox = QComboBox()
self.penStyleComboBox.addItem("Solid",Qt.SolidLine)
self.penStyleComboBox.addItem('Dash',  Qt.DashLine)
self.penStyleComboBox.addItem('Dot',  Qt.DotLine)
self.penStyleComboBox.addItem('Dash Dot',  Qt.DashDotLine)
self.penStyleComboBox.addItem('Dash Dot Dot',  Qt.DashDotDotLine)
self.penStyleComboBox.addItem('None',  Qt.NoPen)

self.penCapComboBox = QComboBox()
self.penCapComboBox.addItem("Flat",Qt.FlatCap)
self.penCapComboBox.addItem('Square', Qt.SquareCap)
self.penCapComboBox.addItem('Round', Qt.RoundCap)

self.penJoinComboBox = QComboBox()
self.penJoinComboBox.addItem("Miter",Qt.MiterJoin)
self.penJoinComboBox.addItem('Bebel', Qt.BevelJoin)
self.penJoinComboBox.addItem('Round', Qt.RoundJoin)

self.brushStyleComboBox = QComboBox()
self.brushStyleComboBox.addItem("Linear Gradient",Qt.LinearGradientPattern)
self.brushStyleComboBox.addItem('Radial Gradient', Qt.RadialGradientPattern)
self.brushStyleComboBox.addItem('Conical Gradient', Qt.ConicalGradientPattern)
self.brushStyleComboBox.addItem('Texture', Qt.TexturePattern)
self.brushStyleComboBox.addItem('Solid', Qt.SolidPattern)
self.brushStyleComboBox.addItem('Horizontal', Qt.HorPattern)
self.brushStyleComboBox.addItem('Vertical', Qt.VerPattern)
self.brushStyleComboBox.addItem('Cross', Qt.CrossPattern)
self.brushStyleComboBox.addItem('Backward Diagonal', Qt.BDiagPattern)
self.brushStyleComboBox.addItem('Forward Diagonal', Qt.FDiagPattern)
self.brushStyleComboBox.addItem('Diagonal Cross', Qt.DiagCrossPattern)
self.brushStyleComboBox.addItem('Dense 1', Qt.Dense1Pattern)
self.brushStyleComboBox.addItem('Dense 2', Qt.Dense2Pattern)
self.brushStyleComboBox.addItem('Dense 3', Qt.Dense3Pattern)
self.brushStyleComboBox.addItem('Dense 4', Qt.Dense4Pattern)
self.brushStyleComboBox.addItem('Dense 5', Qt.Dense5Pattern)
self.brushStyleComboBox.addItem('Dense 6', Qt.Dense6Pattern)
self.brushStyleComboBox.addItem('Dense 7', Qt.Dense7Pattern)
self.brushStyleComboBox.addItem('None', Qt.NoBrush)

self.brushColorFrame = QFrame()
self.brushColorFrame.setAutoFillBackground(True)
self.brushColorFrame.setPalette(QPalette(Qt.green))
self.brushColorPushButton = QPushButton("更改")

labelCol=0
contentCol=1
#建立布局
mainLayout.addWidget(label1,1,labelCol)
mainLayout.addWidget(self.shapeComboBox,1,contentCol)
mainLayout.addWidget(label2,2,labelCol)
mainLayout.addWidget(self.widthSpinBox,2,contentCol)
mainLayout.addWidget(label3,4,labelCol)
mainLayout.addWidget(self.penColorFrame,4,contentCol)
mainLayout.addWidget(self.penColorPushButton,4,3)
mainLayout.addWidget(label4,6,labelCol)
mainLayout.addWidget(self.penStyleComboBox,6,contentCol)
mainLayout.addWidget(label5,8,labelCol)
mainLayout.addWidget(self.penCapComboBox,8,contentCol)
mainLayout.addWidget(label6,10,labelCol)
mainLayout.addWidget(self.penJoinComboBox,10,contentCol)
mainLayout.addWidget(label7,12,labelCol)
mainLayout.addWidget(self.brushStyleComboBox,12,contentCol)
mainLayout.addWidget(label8,14,labelCol)
mainLayout.addWidget(self.brushColorFrame,14,contentCol)
mainLayout.addWidget(self.brushColorPushButton,14,3)
mainSplitter1 = QSplitter(Qt.Horizontal)
mainSplitter1.setOpaqueResize(True)

stack1 = QStackedWidget()
stack1.setFrameStyle(QFrame.Panel|QFrame.Raised)
self.area = PaintArea()
stack1.addWidget(self.area)
frame1 = QFrame(mainSplitter1)
mainLayout1 = QVBoxLayout(frame1)        #mainLayout1.setMargin(10)
mainLayout1.setSpacing(6)
mainLayout1.addWidget(stack1)

layout = QGridLayout(self)
layout.addWidget(mainSplitter1,0,0)
layout.addWidget(mainSplitter,0,1)
self.setLayout(layout)
#信号和槽函数        self.shapeComboBox.activated.connect(self.slotShape)
self.widthSpinBox.valueChanged.connect(self.slotPenWidth)
self.penColorPushButton.clicked.connect(self.slotPenColor)
self.penStyleComboBox.activated.connect(self.slotPenStyle)
self.penCapComboBox.activated.connect(self.slotPenCap)
self.penJoinComboBox.activated.connect(self.slotPenJoin)
self.brushStyleComboBox.activated.connect(self.slotBrush)
self.brushColorPushButton.clicked.connect(self.slotBrushColor)

self.slotShape(self.shapeComboBox.currentIndex())
self.slotPenWidth(self.widthSpinBox.value())
self.slotBrush(self.brushStyleComboBox.currentIndex())

def slotShape(self,value):
shape =  self.area.Shape[value]
self.area.setShape(shape)
def slotPenWidth(self,value):
color = self.penColorFrame.palette().color(QPalette.Window)
style = Qt.PenStyle(self.penStyleComboBox.itemData(self.penStyleComboBox.currentIndex(),Qt.UserRole))
cap = Qt.PenCapStyle(self.penCapComboBox.itemData(self.penCapComboBox.currentIndex(),Qt.UserRole))
join = Qt.PenJoinStyle(self.penJoinComboBox.itemData(self.penJoinComboBox.currentIndex(),Qt.UserRole))
self.area.setPen(QPen(color,value,style,cap,join))
def slotPenStyle(self,value):
self.slotPenWidth(value)
def slotPenCap(self,value):
self.slotPenWidth(value)
def slotPenJoin(self,value):
self.slotPenWidth(value)
def slotPenColor(self):
color = QColorDialog.getColor(Qt.blue)
self.penColorFrame.setPalette(QPalette(color))
self.area.setPen(QPen(color))
def slotBrushColor(self):
color = QColorDialog.getColor(Qt.blue)
self.brushColorFrame.setPalette(QPalette(color))
self.slotBrush(self.brushStyleComboBox.currentIndex())
def slotBrush(self,value):
color = self.brushColorFrame.palette().color(QPalette.Window)
style = Qt.BrushStyle(self.brushStyleComboBox.itemData(value,Qt.UserRole))
if(style == Qt.Lin




翼城县18139447957: 怎样用Python画圆? -
叔舍栀子: 用turtle库,里面就有画圆的函数

翼城县18139447957: Python编程:怎么给同心圆上色 -
叔舍栀子: 用 插入-图片-自选图形-基本形状-同心圆 画,再双击此圆进行颜色编辑,填充颜色和线条颜色都可以变,透明度也可以调.

翼城县18139447957: 在python中如何使用循环结构画四个相切的圆 -
叔舍栀子: 1 2 3 4 5 6 7 8 9 10 11fromturtle import* r=20 x,y=0,0 fori inrange(4):ifi==2:penup()goto(x,2*r)penup()forward(2*r)pendown()circle(r)

翼城县18139447957: python3.3 turtle 怎么顺时针画圆? -
叔舍栀子: circle(100,-360)箭头是向后的,看着不习惯 circle(-100,360)更好,箭头是向前的

翼城县18139447957: Python 如何调用graphics库画圆弧,半圆等 -
叔舍栀子: import turtle turtle.left(135) turtle.circle(120,90) turtle.done()pythone3

翼城县18139447957: 如何用python绘制各种图形 -
叔舍栀子: 1.环境 系统:windows10 python版本:python3.6.1 使用的库:matplotlib,numpy2.numpy库产生随机数几种方法 import numpy as np numpy.random rand(d0, d1, ..., dn) In [2]: x=np.random.rand(2,5) In [3]: x Out[3]:array([[ 0.84286554, 0.50007593, 0...

翼城县18139447957: python能够编写圆形进度条吗 -
叔舍栀子: 首先要明白一点进度条都属于图形界面,需要选择图形界面的模块,我自己学的tkinter,pygame,pyqt5 进度条都是绘制出来的

翼城县18139447957: python turtle如何画椭圆 -
叔舍栀子: 1、先搞清楚画笔的基本用法. 2、再搞清楚椭圆的函数. 3、根据别人的代码,自己多调试几次就画出有意思的图形了. 代码如下: import turtlepen=turtle.Turtle() #定义画笔实例 a=1 for i in range(120):if 0<=i<30 or 60<=i<90:a=a+0.2pen.lt(3) #向左转3度pen.fd(a) #向前走a的步长else:a=a-0.2pen.lt(3)pen.fd(a)print(pen) turtle.mainloop()

翼城县18139447957: 在python中turtle绘制正七边形 -
叔舍栀子: ① 以定长R为半径作圆,并过圆心O作互相垂直的纵横两条直径MN、HP. ② 过N点任作一射线NS,用圆规取七等分,把端点T与M连结起来,然后过NT上的各点推出MT的平行线,把MN七等分. ③以 M为圆心,MN为半径画弧,和PH的延长线相交于K点,从K向MN上各分点中的偶数点或奇数点(图中是 1、3、5、7各点)引射线,与交于A、B、C、M.再分别以 AB、BC、CM为边长,在圆周上从A点(或M点)开始各截一次,得到其他三点,把这些点依次连结起来,即得近似的正七边形. 这种画法适用画圆内接任意正多边形.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网