Python 你能在tkinter界面上改变海龟笔的颜色吗

Python 你能在tkinter界面上改变海龟笔的颜色吗,python,user-interface,tkinter,colors,Python,User Interface,Tkinter,Colors,所以我是Python新手,必须做一个项目,在这个项目中,我们使用tkinter GUI创建一个生成海龟图形的界面。20%的分数用于个人对界面的贡献,因此我希望能够通过从选项菜单中选择来更改海龟笔的颜色,例如,当选择“二叉树”时,您可以选择红色,它将以红色而不是默认的黑色绘制。到目前为止,我已经花了8个小时的时间试图让它发挥作用。有人能帮我一下吗?或者告诉我有没有可能?以下是我目前的代码: # Import the Modules from turtle import * from tkinter

所以我是Python新手,必须做一个项目,在这个项目中,我们使用tkinter GUI创建一个生成海龟图形的界面。20%的分数用于个人对界面的贡献,因此我希望能够通过从选项菜单中选择来更改海龟笔的颜色,例如,当选择“二叉树”时,您可以选择红色,它将以红色而不是默认的黑色绘制。到目前为止,我已经花了8个小时的时间试图让它发挥作用。有人能帮我一下吗?或者告诉我有没有可能?以下是我目前的代码:

# Import the Modules
from turtle import *
from tkinter import *
from tkinter.ttk import Entry, OptionMenu
import math

library = ["Binary Tree", "Dandelion", "Fern", "Flake", "Square Gasket", "Swiss Flag", "Square Gasket", "Circle Gasket"]
colorLibrary = ["black", "red", "blue", "green", "cyan", "magenta", "white", "yellow"]


#Create an empty window and give it's width and height
 root = Tk()
 root.title("Turtle Fractals")
 root.geometry("400x200+300+300")

#Set the pen speed & width
 pen = Pen()
 pen.speed(0)
 pen.width(1)

#end def
 screen = Screen()
 screen.bgcolor("grey")

#===================================
#   Event handler functions
#===================================
def clearF() :
#Empty the entry vars
lengthStr.set("")
fractalStr.set("")
screen.reset()

#End def
pen.goto(0,0)

def drawF() :
 # get the string and make it an integer
 age = int(fractalStr.get())
 length = int(lengthStr.get())

graphics = library.index(libStr.get())    
if graphics == 0 :
    binTree (age, length);

elif graphics == 1 :
    dandelion (age, length);

elif graphics == 2 :
    fern (age, length);

elif graphics == 3 :
    flake (age,length);

elif graphics == 4 :
    sGasket (age,length);

elif graphics == 5 :
    swissFlag (age, length);

elif graphics == 6 :
    squareGasket (age, length);

elif graphics == 7 :
    circleGasket (age, length);

pen = colorLibrary.index(colorLibStr.get())    
if pen == 0 :
     black();

elif pen == 1 :
     red();

elif pen == 2 :
     blue();

elif pen == 3 :
     green();

elif pen == 4 :
     cyan();

elif pen == 5 :
     magenta();

elif pen == 6 :
     white();

elif pen == 7 :
     yellow();

#End elif 
#End def


def black():
 color = Color(000,000,000)

def red():
 color = Color(255,000,000)

def blue():
 color = Color("blue")

def green():
 color = Color("Green")

def cyan():
 color = Color("Cyan")

def magenta():
 color = Color("Magenta")

def white():
 color = Color("White")

def yellow():
 color = Color("Yellow")

#Draw the Binary Tree
def binTree(n,l) :
 if n==0 or l<2 : 
    return
#End if
pen.forward(l)
pen.left(45); binTree(n-1, l/2)
pen.right(90); binTree(n-1, l/2); pen.left(45)
pen.backward(l)
color = colorLibrary
#End def

#Draw the Dandelion
def dandelion(n,l) :
 if n==0 or l<2 :
    return
#End if
pen.forward(l)
pen.left(90); dandelion(n-1, l/3)
pen.right(60); dandelion(n-1, l/3)
pen.right(60); dandelion(n-1, l/3)
pen.right(60); dandelion(n-1, l/3)
pen.left(90)
pen.backward(l)
#End def

#Draw the Fern
def fern (n,l) :
 if n==0 or l<2 :
    return
#End if
pen.forward(2*l/3)
pen.right(50); fern(n-1, l/2); pen.left(50)
pen.forward(2*l/3)
pen.left(30); fern(n-1, l/2); pen.right(30)
pen.forward(2*l/3)
pen.right(15); fern(n-1, 0.8*l); pen.left(15)
pen.backward(2*l)
#End def

#Draw the Koch curve
def koch(n,l) :
 if n==0 or l<2 :
    pen.forward(l)
    return
#End if
koch(n-1, l/3); pen.left(60)
koch(n-1, l/3); pen.right(120)
koch(n-1, l/3); pen.left(60)
koch(n-1, l/3)
#End def

#Draw the Snowflake
def flake(n,l) :
for i in range(3) :
    koch(n,l)
    pen.right(120)
#End for
#End def

#Draw the Sierpinski Gasket
def sGasket(n,l) :
if n==0 or l<2 :
    for i in range(3) :
        pen.forward(l)
        pen.left(120)
        return
    #End for
#End if

for i in range(3) :
    sGasket(n-1, l/3)
    pen.forward(l)
    pen.left(120)
#End for
#End def

# Swiss Flag
def swissFlag(n,l):
 if n == 0 or l < 2:
      for i in range(4):
           pen.forward(l)
           pen.left(90)
      #endfor
      return
 #endif

 for i in range(4):
      swissFlag(n - 1, l / 3)
      pen.forward(l)
      pen.left(90)
      #endfor
 #end def

 # Square gasket
 def squareGasket(n,l):
 if n == 0 or l < 2:
      for i in range(4):
           pen.forward(l)
           pen.left(90)
      #endfor
      return
 #endif

 for i in range(4):
     squareGasket(n - 1, l / 3)
     pen.forward(l)
     pen.left(90)
     pen.forward(l / 3);pen.left(90);pen.forward(l / 3);pen.right(90);
     squareGasket(n - 1, l / 3)
     pen.right(90);pen.forward(l / 3);pen.left(90);pen.backward(l/3)
 #endfor
 #end

 # Circle gasket
 def circleGasket(n,l):
 if n == 0 or l<2:
    return
 #endif
 for i in range(2):
    circleGasket(n - 1, l / 2)
    pen.circle(l, 90)
    circleGasket(n - 1, l / 3)
    pen.circle(l, 90)
  #end


 #===================================
 #   Make the interface components
 #===================================

 label = Label(root, text = "Turtle Fractals")
 label.grid(row = 0, column = 1, columnspan = 2)

 fractalLabel = Label(root, text = "Fractal")
 fractalLabel.grid(row = 1, column = 0)

 fractalStr = StringVar()
 fractalEntry = Entry(root, textvariable = fractalStr)
 fractalEntry.grid(row = 1, column = 1)

 libStr = StringVar()
 libOptionMenu = OptionMenu(root, libStr, library[0], *library)
 libOptionMenu.grid(row = 1, column = 3, columnspan = 2)

 colorLibStr = StringVar()
 colorLibOptionMenu = OptionMenu(root, colorLibStr, colorLibrary[0], *colorLibrary)
 colorLibOptionMenu.grid(row = 2, column = 3, columnspan = 2)

 #================

 lengthLabel = Label(root, text = "Length")
 lengthLabel.grid(row = 2, column = 0)

 lengthStr = StringVar()
 lengthEntry = Entry(root, textvariable = lengthStr)
 lengthEntry.grid(row = 2, column = 1)

 clearButton = Button(root, text = "Clear", command = clearF)
 clearButton.grid(row = 3, column = 1, columnspan = 2)

 drawButton = Button(root, text = "Draw", command = drawF)
 drawButton.grid(row = 3, column = 3)

 #=====================Catch Events===================
 root.mainloop()
#导入模块
从海龟进口*
从tkinter进口*
从tkinter.ttk导入条目,选择菜单
输入数学
库=[“二叉树”、“蒲公英”、“蕨类”、“鳞片”、“方形垫片”、“瑞士国旗”、“方形垫片”、“圆形垫片”]
colorLibrary=[“黑色”、“红色”、“蓝色”、“绿色”、“青色”、“洋红”、“白色”、“黄色”]
#创建一个空窗口,并给出其宽度和高度
root=Tk()
根标题(“海龟分形”)
根几何(“400x200+300+300”)
#设置画笔速度和宽度
pen=pen()
笔速(0)
笔宽(1)
#结束定义
screen=screen()
屏幕颜色(“灰色”)
#===================================
#事件处理函数
#===================================
def clearF():
#清空入口变量
长度str.set(“”)
分形结构集(“”)
screen.reset()
#结束定义
笔。后藤(0,0)
def drawF():
#获取字符串并使其成为整数
age=int(fractalStr.get())
length=int(lengthStr.get())
graphics=library.index(libStr.get())
如果图形==0:
binTree(年龄、长度);
elif图形==1:
蒲公英(年龄、长度);
elif图形==2:
蕨类植物(年龄、长度);
elif图形==3:
鳞片(年龄、长度);
elif图形==4:
sGasket(年龄、长度);
elif图形==5:
swissFlag(年龄、长度);
elif图形==6:
方形垫片(年龄、长度);
elif图形==7:
圆环(年龄、长度);
pen=colorLibrary.index(colorLibStr.get())
如果pen==0:
黑色();
elif pen==1:
红色();
elif pen==2:
蓝色();
elif pen==3:
绿色();
elif pen==4:
青色();
elif pen==5:
洋红();
elif pen==6:
白色();
elif pen==7:
黄色();
#结束elif
#结束定义
def black():
颜色=颜色(000000000)
def red():
颜色=颜色(255000000)
def blue():
颜色=颜色(“蓝色”)
def绿色()
颜色=颜色(“绿色”)
def cyan():
颜色=颜色(“青色”)
def洋红():
颜色=颜色(“洋红色”)
def white():
颜色=颜色(“白色”)
def黄色()
颜色=颜色(“黄色”)
#画二叉树
def binTree(北、北):

如果n==0或l是,您可以
turtle.pencolor()

阅读文档: