Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中在圆内插入文本_Python_Graphics_Turtle Graphics_Finite Automata_State Machine - Fatal编程技术网

在Python中在圆内插入文本

在Python中在圆内插入文本,python,graphics,turtle-graphics,finite-automata,state-machine,Python,Graphics,Turtle Graphics,Finite Automata,State Machine,我正在尝试编写用于绘制DFA的Python代码。我计划使用海龟图书馆。有替代品吗?我可以画节点,但不确定如何在圆圈内插入状态名称。 谁能给我指路吗?下面是到目前为止我的代码。 谢谢 我无法在我的环境中安装turtle模块,但我认为问题出在可变范围内 myTurtle变量未在全局范围内定义,因此来自draw\u节点的myTurtle与来自draw\u设计的myTurtle不同 另一方面,函数draw_节点是以myTurtle作为输入参数正确调用的,但实际上在draw_节点中没有使用该输入 尝试改变

我正在尝试编写用于绘制DFA的Python代码。我计划使用海龟图书馆。有替代品吗?我可以画节点,但不确定如何在圆圈内插入状态名称。 谁能给我指路吗?下面是到目前为止我的代码。 谢谢

我无法在我的环境中安装turtle模块,但我认为问题出在可变范围内

myTurtle变量未在全局范围内定义,因此来自draw\u节点的myTurtle与来自draw\u设计的myTurtle不同

另一方面,函数draw_节点是以myTurtle作为输入参数正确调用的,但实际上在draw_节点中没有使用该输入

尝试改变这一点:

def draw_node(some_turtle):
    myTurtle.circle(50)
    turtle.getscreen().__root.mainloop()
为此:

def draw_node(some_turtle):
    some_turtle.circle(50)
    turtle.getscreen().__root.mainloop()

您的代码的问题似乎是缺乏对turtle库和Python编程的熟悉。我不一定认为turtle library是您想要做的事情的最佳选择,但它可以实现您的程序所希望实现的目标:

from turtle import Turtle, Screen

RADIUS = 50

FONT_SIZE = 18

FONT = ("Arial", FONT_SIZE, "normal")

def draw_node(turtle, text, x, y):
    turtle.up()
    turtle.goto(x, y - RADIUS)
    turtle.down()
    turtle.circle(RADIUS)
    turtle.up()
    turtle.goto(x, y - FONT_SIZE // 2)
    turtle.write(text, align="center", font=FONT)

def draw_design(turtle):

    turtle.color("white")
    turtle.pensize(4)

    draw_node(turtle, "S0", -100, 100)

    draw_node(turtle, "S1", 100, 100)

screen = Screen()
screen.bgcolor("blue")

yertle = Turtle(shape="turtle")

draw_design(yertle)

yertle.home()

screen.exitonclick()
输出


是的,你说得对,我是python新手。非常感谢您的代码;请告诉我,如果turtle不是最佳选择,有哪些替代方案?@Chica_Programmador,一种替代方案是使用tkinter模块,turtle模块是基于该模块构建的。它比turtle更复杂,但就像turtle一样,您可以构建一组与您的问题域相关的函数,然后在代码中使用这些函数。
from turtle import Turtle, Screen

RADIUS = 50

FONT_SIZE = 18

FONT = ("Arial", FONT_SIZE, "normal")

def draw_node(turtle, text, x, y):
    turtle.up()
    turtle.goto(x, y - RADIUS)
    turtle.down()
    turtle.circle(RADIUS)
    turtle.up()
    turtle.goto(x, y - FONT_SIZE // 2)
    turtle.write(text, align="center", font=FONT)

def draw_design(turtle):

    turtle.color("white")
    turtle.pensize(4)

    draw_node(turtle, "S0", -100, 100)

    draw_node(turtle, "S1", 100, 100)

screen = Screen()
screen.bgcolor("blue")

yertle = Turtle(shape="turtle")

draw_design(yertle)

yertle.home()

screen.exitonclick()