Python 在圆内生成并放置随机点

Python 在圆内生成并放置随机点,python,tkinter,geometry,shapes,zelle-graphics,Python,Tkinter,Geometry,Shapes,Zelle Graphics,我有一个任务,我应该创建一个圆,并在其中绘制一些随机点。 我不熟悉Python和Python库。 我需要一些关于不同软件或软件包的建议,这些建议可能会帮助我完成任务 我看过一些YouTube视频,但它们与我的主题无关。 这是我在教程中看到的创建圆的代码: from graphics import * def main(): win = GraphWin("my window",500,500) pt = Point(250,250) win.se

我有一个任务,我应该创建一个圆,并在其中绘制一些随机点。 我不熟悉Python和Python库。 我需要一些关于不同软件或软件包的建议,这些建议可能会帮助我完成任务

我看过一些YouTube视频,但它们与我的主题无关。 这是我在教程中看到的创建圆的代码:

from graphics import *

def main():
        win = GraphWin("my window",500,500)
        pt = Point(250,250)
        win.setBackground(color_rgb(255,255,255))
        cir = Circle(pt,50)
        cir.draw(win)
        win.getMouse()
        win.close()
main()
我可以继续这个图形课程来完成我的任务吗?
如果没有,请建议一个好的图书馆或s/w

您可以使用
tkinter
canvas
小部件

下面的示例跟踪画布上以200200为中心的圆。单击鼠标后,计算到中心的距离,如果该距离小于半径,则在画布上绘制一个点

import tkinter as tk


def distance_to_center(x, y):
    return ((x-200)**2 + (y-200)**2)**0.5

def place_point(e):
    if distance_to_center(e.x, e.y) < 100:
        canvas.create_oval(e.x-2, e.y-2, e.x+2, e.y+2)


root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.create_oval(100, 100, 300, 300)
canvas.pack()

canvas.bind('<1>', place_point)

root.mainloop()
将tkinter作为tk导入
def到def中心的距离(x,y):
返回((x-200)**2+(y-200)**2)**0.5
def放置点(e):
如果距离_到_中心(e.x,e.y)<100:
画布。创建椭圆(e.x-2,e.y-2,e.x+2,e.y+2)
root=tk.tk()
canvas=tk.canvas(根,宽度=400,高度=400)
画布。创建椭圆(100100300300)
canvas.pack()
画布绑定(“”,放置点)
root.mainloop()

以下是我使用海龟图形重新实现@ReblochonMasque的tkinter示例(+1):

import turtle

LARGE_RADIUS, SMALL_DIAMETER = 100, 4

def place_point(x, y):
    turtle.goto(x, y)

    if turtle.distance(0, 0) < LARGE_RADIUS:
        turtle.dot(SMALL_DIAMETER)

turtle.setup(width=400, height=400)

turtle.hideturtle()
turtle.speed('fastest')
turtle.penup()
turtle.sety(-LARGE_RADIUS)  # center circle at (0, 0)
turtle.pendown()
turtle.circle(LARGE_RADIUS)
turtle.penup()

turtle.onscreenclick(place_point)
turtle.mainloop()
导入海龟
大半径,小直径=100,4
def放置点(x,y):
乌龟。后藤(x,y)
如果距离(0,0)<大半径:
海龟点(小直径)
海龟。设置(宽度=400,高度=400)
乌龟
乌龟。速度(“最快”)
乌龟
海龟.sety(-大半径)#中心圆(0,0)
乌龟
海龟圆(大半径)
乌龟
海龟。在屏幕上单击(放置点)
tutle.mainloop()
尽管像Zelle graphics.py一样,turtle graphics是在tkinter上实现的,但它使用不同的坐标系。在复杂性和能力方面:

Zelle graphics.py < turtle < tkinter
Zelle graphics.py
<>如果你发现TKTITER对于你的需求太复杂,而Zelle graphics.py不够,那么考虑海龟的图形,像TKiTter,带有Python。

我可以继续这个图形课程来完成我的任务吗

可能吧。下面是您停止的下一步示例:

from graphics import *

WIDTH, HEIGHT = 500, 500
LARGE_RADIUS, SMALL_RADIUS = 50, 2
CENTER = Point(WIDTH/2, HEIGHT/2)

def distance_to_center(point):
    return ((point.getX() - CENTER.getX())**2 + (point.getY()- CENTER.getY())**2) ** 0.5

win = GraphWin("My Window", WIDTH, HEIGHT)
circle = Circle(CENTER, LARGE_RADIUS)
circle.draw(win)

while True:
    point = win.getMouse()

    if distance_to_center(point) < LARGE_RADIUS:
        dot = Circle(point, SMALL_RADIUS)
        dot.draw(win)
从图形导入*
宽度,高度=500500
大半径,小半径=50,2
中心=点(宽度/2,高度/2)
def距离_到_中心(点):
返回((point.getX()-CENTER.getX())**2+(point.getY()-CENTER.getY())**2)**0.5
win=图形宽度(“我的窗口”、宽度、高度)
圆=圆(中心,大半径)
圈。平局(赢)
尽管如此:
point=win.getMouse()
如果距离中心(点)<大半径:
点=圆(点,小半径)
打点(赢)