0

我正在嘗試編寫用於繪製DFA的Python代碼。我打算使用烏龜圖書館。有沒有替代品?我可以繪製節點,但不確定如何在圓圈內插入狀態名稱。 任何人都可以請指導我嗎?以下是我的代碼到目前爲止。 謝謝!在Python中的圓圈內插入文本

import turtle 

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


def draw_design(): 

    window = turtle.Screen() 
    window.bgcolor("teal") 

    myTurtle = turtle.Turtle() 
    myTurtle.color("white") 
    myTurtle.shape("turtle") 
    myTurtle.speed(5) 
    myTurtle.pensize(4) 

    draw_node(myTurtle) 

    window.exitonclick() 

draw_design() 

回答

0

與您的代碼的問題似乎是缺乏與特別和Python編程烏龜庫熟悉的組合一般。我不一定會說,龜庫是最好的選擇。你想要做什麼,但它可以做你的程序立志要取得哪些成果:

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() 

輸出

enter image description here

+0

是,你是對的,我剛剛接觸python。非常感謝您的代碼;請問如果烏龜不是最佳選擇,那麼候選人是什麼? –

+0

@Chica_Programmador,另一種選擇是使用烏龜模塊構建的tkinter模塊。它比龜更復雜,但就像烏龜一樣,您可以構建一組與您的問題域相關的函數,然後與代碼中的函數一起工作。 – cdlane

0

在我的環境我無法安裝模塊,但我認爲,問題出在變量的作用域。

myTurtle變量沒有在全局範圍內定義的,所以myTurtledraw_node是不同的,那麼myTurtledraw_design

在另一方面,功能draw_node正確調用與myTurtle作爲輸入參數,但實際上有內部draw_node沒有使用該輸入的。

試圖更改:

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() 
相關問題