鱼C论坛

 找回密码
 立即注册
查看: 1963|回复: 0

python的turtle pen怎么赋值

[复制链接]
发表于 2022-10-30 19:59:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问大家怎么把pen speed和pen width赋值给画笔以及实现hide turtle和hide trace(跳过画图过程)功能,图片和代码如下:
from tkinter import *
from tkinter.ttk import *
from turtle import *
import turtlefigures
from tkinter import colorchooser

# create an empty frame and setup its geometry
root = Tk()
root.geometry("800x500+200+200")
root.title("Turtle Interface")

# create the canvas
canvasFrame = LabelFrame(root, text = "Turtle Canvas")
canvas = Canvas(canvasFrame, width = 400, height = 400)
canvas.pack()
canvasFrame.grid(row = 0, column = 4, rowspan = 3, columnspan = 3,
                 padx = 10, pady = 10)

# make the screen
screen = TurtleScreen(canvas)
screen.bgcolor("white")
w, h = screen.screensize()


# make the pen
pen = RawTurtle(screen)
pen.color("red")
pen.width(3)

# make a control panel and grid it
controlFrame = LabelFrame(root, text = "Control Panel")
controlFrame.grid(row = 0, column = 0, columnspan = 3, padx = 10)
        
def getColor():
    color_code = colorchooser.askcolor()
colorButton = Button(controlFrame, text = "Pen Color Picker", command = getColor)
colorButton.grid(row = 0, column = 0, columnspan = 3,pady=10,ipadx=50,ipady=10)

#create speed scale
def penSpeed(currentSpeed):
    currentSpeed = penspeedStr.get()
    pen.speed(currentSpeed)

penspeedStr=DoubleVar()
scale = Scale(controlFrame,orient=HORIZONTAL,length=150,from_=0.0,to=10.0,
              variable=penSpeed,command=penSpeed)
scale.bind('<ButtonRelease-1>',penSpeed)
scale.grid(row = 1, column = 1, columnspan = 3)
penspeedLabel = Label(controlFrame,text='Pen Speed')
penspeedLabel.grid(row = 1, column = 0,pady=10)



#create size scale
def penSize(currentSize):
    currentSize = pensizeStr.get()
    pen.size(currentSize)
pensizeStr=DoubleVar()
scale = Scale(controlFrame,orient=HORIZONTAL,length=150,from_=1.0,to=10.0,
              command=penSize)
scale.bind('<ButtonRelease-1>',penSize)
scale.grid(row = 2, column = 1, columnspan = 3)
pensizeLabel = Label(controlFrame,text='Pen Size')
pensizeLabel.grid(row = 2, column = 0,pady=10)


def turtleshape():
     if(CheckVar1.get()==0 and CheckVar2.get()==0 ):
         s = ''
     else:
         s1 = "Hide Turtle" if CheckVar1.get()==1 else ""
         s2 = "Hide Trace" if CheckVar2.get() == 1 else ""
CheckVar1 = IntVar()
CheckVar2 = IntVar()
ch1 = Checkbutton(controlFrame,text='Hide Turtle',variable = CheckVar1,onvalue=1,offvalue=0)
ch2 = Checkbutton(controlFrame,text='Hide Trace',variable = CheckVar2,onvalue=1,offvalue=0)
ch1.grid(row = 3, column = 0)
ch2.grid(row = 4, column = 0)
TurtleButton = Button(controlFrame, text = "Turtle Control")
TurtleButton.grid(row = 5,column = 0,columnspan = 2,padx=20,
                  pady=10,ipadx=50,ipady=10)



orderLabel = Label(controlFrame, text = "Order")
orderLabel.grid(row = 7, column = 0)

orderStr = StringVar()
orderEntry = Entry(controlFrame, textvariable = orderStr)
orderEntry.grid(row = 7, column = 1, columnspan = 2)

lengthLabel = Label(controlFrame, text = "Length")
lengthLabel.grid(row = 8, column = 0)

lengthStr = StringVar()
lengthEntry = Entry(controlFrame, textvariable = lengthStr)
lengthEntry.grid(row = 8, column = 1, columnspan = 2)



def onClearF():
       # clear the entries
       orderStr.set("")
       lengthStr.set("")

       # also clear the screen
       screen.resetscreen()

       # reset dropdown
       figureStr.set("Binary Tree")

#end onClear
clearButton = Button(controlFrame, text = "Clear", command = onClearF)
clearButton.grid(row = 10, column = 0,ipadx=40,ipady=10)

# make the OptionMenu dropdown list
figureList = ["Binary Tree", "Dandelian", "Fern", "Koch", "Anti-Flake", "Flake","Gasket", "Windmill"
              , "Ccurve", "Pyramid", "Rectangle","maze"]
figureStr = StringVar()
figureOptionMenu = OptionMenu(controlFrame, figureStr, figureList[0], *figureList)
figureOptionMenu.grid(row = 9, column = 0,columnspan = 2,padx=20,pady=10,ipadx=50,ipady=10)

def onDrawF():
    # get the order and length
    order = int(orderStr.get())
    length = int(lengthStr.get())

    #what is the figure to draw
    figure = figureStr.get()
    figureId = figureList.index(figure)

    # check what to draw
    if figureId == 0:  # draw the binary tree
        pen.up()
        pen.backward(w/2)
        pen.down()
        turtlefigures.tree(order, length, pen)

    elif figureId == 1:  # draw the dandelion
        pen.up()
        pen.backward(w/2)
        pen.down()
        turtlefigures.tree4(order, length, pen)

    elif figureId == 2:  # draw the fern
        pen.up()
        pen.backward(w/2)
        pen.down()
        turtlefigures.fern(order, length, pen)
    elif figureId == 3:
        pen.up()
        pen.backward(w/4)
        pen.down()
        turtlefigures.koch(order, length, pen)
    elif figureId == 4:
        pen.up()
        pen.backward(w/4)
        pen.down()
        turtlefigures.flake(order, length, pen)
    elif figureId == 5:
        pen.up()
        pen.backward(w/4)
        pen.down()
        turtlefigures.flake1(order, length, pen)
    elif figureId == 6:
        turtlefigures.gasket(order, length, pen)
    elif figureId == 7:
        turtlefigures.carpet(order, length, pen)
    elif figureId == 8:
        turtlefigures.ccurve(order, length, pen)
    elif figureId == 9:
        pen.up()
        pen.backward(w/4)
        pen.down()
        turtlefigures.cc(order, length, pen)
    elif figureId == 10:
        pen.up()
        pen.backward(w/4)
        pen.down()
        turtlefigures.ccc(order, length, pen)
    elif figureId == 11:
        pen.up()
        pen.backward(w/4)
        pen.down()
        turtlefigures.maze(order, length, pen)

# end of draw


#end onConvertF      
drawButton = Button(controlFrame, text = "Draw", command = onDrawF)
drawButton.grid(row = 10, column = 1, ipadx=40,ipady=10)

root.tk.call("source", "azure.tcl")
root.tk.call("set_theme", "dark")






W0@4FYTJV4H%0LBQY7J8Q3R.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 21:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表