导航:首页 > 编程语言 > python随机画一个圆

python随机画一个圆

发布时间:2023-07-12 05:49:37

python pyqt怎么画圆

这个例子我做了好几天:

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

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

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

【知识点】

1、关于多个点的使用

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

请看:

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

⑵ Python如何画个正六边形,再画一个最小的外接圆和一个最大内接圆

Python可以使用turtle库来绘制图形,以下汪答是绘制正六边形、最小外接圆和最大内接圆的代码:

```python
import turtle
import math

# 创建画布
canvas = turtle.Screen()

# 创建画笔
pen = turtle.Turtle()

# 画正六边形
for i in range(6):
pen.forward(100)
pen.right(60)

# 计算正六边形的外接圆半径
r1 = 100 / math.sin(math.radians(30))

# 将画笔移动到圆心
pen.penup()
pen.goto(0, 0)
pen.pendown()

# 画最小外接圆
pen.circle(r1)

# 计算正六边形的内接圆半径
r2 = 100 * math.sqrt(3) / 3

# 画最大内接圆
pen.penup()
pen.goto(0, -r2)
pen.pendown()
pen.circle(r2)

# 隐藏画笔
pen.hideturtle()

# 关闭画布
canvas.exitonclick()
```

代码解析:

首先创建画布和画笔,然后使用循环画正六边形。接着根据正六边形的外接圆半径公式 $R = \frac{a}{\sin{(\frac{\pi}{n})}}$,计算出正六边形的外接圆半径 r1。将画笔移动到圆心,画最小外接圆。再根据正六边形的内切圆困仔慧半径公式 $r = \frac{a\sqrt{3}}{3}$,计算出正六边形的内戚槐接圆半径 r2。最后将画笔移动到内接圆底部,画最大内切圆。最后隐藏画笔并关闭画布。

运行以上代码就可以得到如下图所示的正六边形、最小外接圆和最大内接圆:

![正六边形、最小外接圆和最大内接圆](https://i.imgur.com/u6UWzBC.png)

⑶ python 绘制一个圆,当单击窗口的任意位置时圆移动到单击的位置,如何编写代码

#-*-coding:UTF-8-*-


importpygame,sys


frompygame.localsimport*


white=255,255,255

blue=0,0,200

pygame.init()

screen=pygame.display.set_mode((600,800))

myfont=pygame.font.Font(None,20)

textImage=myfont.render("hellogame",True,white)

position=200,200

print(position)

whileTrue:

foreventinpygame.event.get():

ifevent.typein(QUIT,KEYDOWN):

sys.exit()

elifevent.type==MOUSEBUTTONDOWN:

position=event.pos


screen.fill(blue)

screen.blit(textImage,(100,100))

#position=200,200

radius=100

width=10

pygame.draw.circle(screen,white,position,radius,width)

pygame.display.update()

用pygame创建界面并监控鼠标按下事件,获得按下位置,画圆

代码注意缩进如下图:

⑷ python turtle画4个同心圆方法

importturtle
#drawfirstcircle
turtle.penup()
turtle.goto(0,-200)
turtle.pendown()
turtle.circle(200)
#drawsecondcircle
turtle.penup()
turtle.goto(0,-150)
turtle.pendown()
turtle.circle(150)
#drawthirdcircle
turtle.penup()
turtle.goto(0,-100)
turtle.pendown()
turtle.circle(100)
#drawfourthcircle
turtle.penup()
turtle.goto(0,-50)
turtle.pendown()
turtle.circle(50)


画笔的坐标默认在0,0,就以它为圆心。

因为turtle画圆的时候是从圆的底部开始画的,所以需要找到四个圆底部的坐标

比如:

第一个半径为200的圆,底部为(0,-200)

第二个半径为150的圆,底部为(0,-150)

第三个半径为100的圆,底部为(0,-100)

第四个半径为 50的圆,底部为(0, -50)


画的时候按下面的步骤:

  1. 抬起画笔:turtle.penup()

  2. 移动到相应坐标:turtle.goto(坐标)

  3. 放下画笔:turtle.pendown()

  4. 画圆:turtle.circle(半径)


效果如下图所示:



⑸ 用python画一个圆

###################################
# coding=utf-8
# !/usr/bin/env python
# __author__ = 'pipi'
# ctime 2014.10.11
# 绘制椭圆和圆形
###################################
from matplotlib.patches import Ellipse, Circle
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ell1 = Ellipse(xy = (0.0, 0.0), width = 4, height = 8, angle = 30.0, facecolor= 'yellow', alpha=0.3)
cir1 = Circle(xy = (0.0, 0.0), radius=2, alpha=0.5)
ax.add_patch(ell1)
ax.add_patch(cir1)

x, y = 0, 0
ax.plot(x, y, 'ro')

plt.axis('scaled')
# ax.set_xlim(-4, 4)
# ax.set_ylim(-4, 4)
plt.axis('equal') #changes limits of x or y axis so that equal increments of x and y have the same length

plt.show()

你可以试试,谢谢。

⑹ python中turtle画圆的代码

import turtle
turtle.circle(80)

⑺ python中点圆画法

1、我们的电脑上要安装有Python,我们找到安装的Python并打开。
2、在打开的Python窗口中执行文件菜单的新建命令,新建一个idle的文件项目。
3、在新建的idle项目中输入下面代码:importturtle、turtle.color("blue")turtle.circle(100)绘制出第一个大圆出来。
4、下面执行第一个带蔽大圆的填充命令,执行下面代码:importturtle、裤行配turtle.color("blue")、turtle.begin_fill()、turtle.circle(100)、turtle.end_fill()、通过turtle.begin_fill()与turtle.endfill()。
5、下面来画第二个小圆,需要先跳转画笔,并更改画笔颜色,画出第胡指二个小圆。跳转画笔使用goto命令。
6、最后画中间的小圆操作和大圆一样,执行填充命令即可。这样一个圆中圆的效果就完成了。

⑻ python怎么用turtle画圆

turtle.circle ()

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

⑼ python 如何画圆

1.调用包函数绘制圆形Circle和椭圆Ellipse

阅读全文

与python随机画一个圆相关的资料

热点内容
图片怎么压缩到10k 浏览:993
幻塔悯雨岛是什么渠道的服务器 浏览:526
51单片机控制液晶屏 浏览:876
单片机线性输出 浏览:413
android40设计规范 浏览:163
mc命令方块变大 浏览:997
rpgxp手机编程工具 浏览:331
小米电视4谷歌服务器地址 浏览:593
复杂驱动程序编译 浏览:501
西门子数控车床编程指令 浏览:615
华为手机电池有没有加密 浏览:221
域名查询被墙源码 浏览:678
电脑文件夹压缩包格式 浏览:67
安卓堆糖怎么保存 浏览:358
multisim中单片机 浏览:603
加密电梯卡怎么复制到苹果手机上 浏览:304
php获取数据类型 浏览:915
新概念c51单片机 浏览:326
删除文件的命令行 浏览:981
java编程软件eclipse 浏览:198